首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cakephp Datatables Group

问Cakephp Datatables Group
EN

Stack Overflow用户
提问于 2019-10-11 08:45:07
回答 3查看 104关注 0票数 0

我有下面的代码。我想在服务器端的datatables类上执行group子句。

代码语言:javascript
复制
$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
        );

我得到了以下错误

代码语言:javascript
复制
syntax error, unexpected end of file in 

我也厌倦了github上的扩展版本,但这也不起作用。另外,我如何在其中添加where子句?

我正在使用cakephp3。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-11 09:34:41

我找到了这个伟大的图书馆

https://datatables.ozdemir.be/group-by

任何被困的人都应该看看这个。

代码语言:javascript
复制
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();
    }
票数 1
EN

Stack Overflow用户

发布于 2019-10-11 08:58:17

这是Cakephp Datatables Group的例子

请用此示例验证您的代码,使您没有遗漏任何步骤或语法!

票数 0
EN

Stack Overflow用户

发布于 2019-10-11 09:07:55

您正在使用heredoc语法来分隔字符串。EOT是标识符。

从文档,

结束标识符必须从行的第一列开始。

所以而不是

代码语言:javascript
复制
        EOT;

它应该是

代码语言:javascript
复制
EOT;

远离Docs

值得注意的是,带有结束标识符的行必须不包含除分号(;)以外的其他字符。这尤其意味着标识符不可能缩进,分号前后可能没有任何空格或制表符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58337447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档