Cakephp 3:Paginator链接

时间:2016-02-02 11:10:21

标签: cakephp pagination

这是我的index()函数:

$this->paginate = [
        'conditions' => [
            'Items.state_id' => $state,
        ],
        'contain' => ['Accounts', 'Creditors', 'States', 'Bankaccounts' => ['joinType' => 'LEFT']],
        'order' => ['Items.account_id ASC', 'Items.creditor_id ASC', 'Items.payuntil ASC']
    ];
    $this->set('items', $this->paginate($this->Items));
    $this->set('_serialize', ['items']);

在我想使用第2页的分页链接之前,它正常工作:

我的观点:

<div class="paginator">
    <ul class="pagination">
        <?= $this->Paginator->prev('< ' . __('vorherige')) ?>
        <?= $this->Paginator->numbers() ?>
        <?= $this->Paginator->next(__('nächste') . ' >') ?>
    </ul>
    <p><?= $this->Paginator->counter('Seite {{page}} von {{pages}}') ?></p>
</div>

这是浏览器中的输出:

<a href="/items?page=2&amp;sort=0&amp;direction=Items.account_id+ASC">2</a>

但是这会导致sql错误:

    WHERE 
  Items.state_id = 1 
ORDER BY 
  asc 
LIMIT 
  20 OFFSET 0

有一个空的ORDER BY选项。

如果我将上述链接更改为:/ items?page = 2 它按预期工作。

那么这里有什么问题? 我怎样才能解决这个问题? 请建议: - )

1 个答案:

答案 0 :(得分:1)

正确的语法是

'order' => ['Items.account_id' => 'ASC', 'Items.creditor_id' => ' ASC', 'Items.payuntil' => ' ASC']

你会停止收到错误,但你会发现这个问题:

https://github.com/cakephp/cakephp/issues/7324