Cakephp Datatables SSP Group By - PullRequest
       4

Cakephp Datatables SSP Group By

0 голосов
/ 11 октября 2019

У меня есть следующий код. Я хочу выполнить предложение group by для класса SSP datatables на сервере.

$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.

Ответы [ 3 ]

0 голосов
/ 11 октября 2019

Вы используете синтаксис heredoc для разделения строки. EOT - это идентификатор.

Из Документов ,

Закрывающий идентификатор должен начинаться с первого столбца строки

Таким образом, вместо

        EOT;

это должно быть

EOT;

Вдали от документов

Очень важно отметить, что строка сзакрывающий идентификатор не должен содержать других символов, кроме точки с запятой (;). В особенности это означает, что идентификатор не может иметь отступ, и не должно быть пробелов или табуляции до или после точки с запятой.

0 голосов
/ 11 октября 2019

Я нашел, что эта замечательная библиотека делает

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();
    }
0 голосов
/ 11 октября 2019

Это пример Группа SSP Cakephp Datatables По

. Пожалуйста, проверьте код в этом примере, чтобы не пропустить ни один шаг или синтаксис !!!.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...