我有下面的代码。我想在服务器端的datatables类上执行group子句。
$loggedInUser = $this->Auth->user();
$loggedInUser = CommonUtil::DataTableToArr($loggedInUser);
$this->autoRender = false;
$table = <<<EOT
(select UserId , sum(GrossRate) as UserRate, sum(UserRate) , sum(OfferwallRate) ,
sum(NumberOfTasks) from offerwalldb.offerwall_transaction_by_users
group by UserId
) tmp
EOT;
$primaryKey = 'Id';
Log::debug($this->request->data);
$columns = array(
array( 'db' => 'UserId', 'dt' => 0, 'field' => 'UserId' ),
array( 'db' => 'UserRate', 'dt' => 1, 'field' => 'Rate' )
);
$result = SSPGroup::simple($_GET, CommonUtil::$dbDetails, $table, $primaryKey, $columns );
Log::debug($result);
echo json_encode(
$result
);我得到了以下错误
syntax error, unexpected end of file in 我也厌倦了github上的扩展版本,但这也不起作用。另外,我如何在其中添加where子句?
我正在使用cakephp3。
发布于 2019-10-11 09:34:41
我找到了这个伟大的图书馆
https://datatables.ozdemir.be/group-by
任何被困的人都应该看看这个。
use Ozdemir\Datatables\Datatables;
use Ozdemir\Datatables\DB\MySQL;
public function GetDataByUsers()
{
$loggedInUser = $this->Auth->user();
$loggedInUser = CommonUtil::DataTableToArr($loggedInUser);
$this->autoRender = false;
$config = [
'host' => 'localhost',
'port' => '3306',
'username' => 'root',
'password' => '',
'database' => 'offerwalldb'
];
$dt = new Datatables(new MySQL($config));
$dt->query('select UserId ,SUM(GrossRate) as GrossRate
from offerwalldb.offerwall_transaction_by_users
group by UserId');
echo $dt->generate();
}发布于 2019-10-11 08:58:17
请用此示例验证您的代码,使您没有遗漏任何步骤或语法!
发布于 2019-10-11 09:07:55
您正在使用heredoc语法来分隔字符串。EOT是标识符。
从文档,
结束标识符必须从行的第一列开始。
所以而不是
EOT;它应该是
EOT;远离Docs
值得注意的是,带有结束标识符的行必须不包含除分号(;)以外的其他字符。这尤其意味着标识符不可能缩进,分号前后可能没有任何空格或制表符。
https://stackoverflow.com/questions/58337447
复制相似问题