Cake3 分页器排序错误

Cake3 Paginator Sort Error

我有一个非常简单的模型,我想对其进行分页。分页有效,但排序 links 没有任何效果:

我的控制器:

public $paginate = [
        'limit' => 10,
        'order' => [
            'Properties.id' => 'asc'
        ],
        'sortWhitelist' => [
            'Properties.id',
            'Properties.name',
            'Properties.active'
        ],
];

我的查询:

$properties = $this->Properties->find('all')->where($options)->contain($contains)->order(['Properties.id']);

$this->set('properties', $this->paginate($properties));

我的视图每页显示 10 个项目,link 到 pages/next/previous 工作正常。当我点击排序 link:

$this->Paginator->sort('id', 'ID')

调用的url是:

properties/index/3?sort=id&direction=desc

页面重新加载,但数据的顺序没有改变。

白名单需要您在排序中使用的确切字段名称。它不会自动添加主要 table 的名称,因此您的白名单应如下所示:

public $paginate = [
    'limit' => 10,
    'order' => [
        'Properties.id' => 'asc'
    ],
    'sortWhitelist' => [
        'id',
        'name',
        'active'
    ],
];

它将在查询中看到 "id" 并检查白名单中是否存在确切的字段名称 "id"。

此外,您似乎在查询中包含了 order()。要允许分页器设置顺序,您应该删除此子句。