在cakephp 3.3中对分页结果进行排序需要一些帮助 我想按多列排序,但是如果我继续下一个(或任何其他页面),分页只考虑第一个。 它是一个功能还是一个bug?
这是控制器中的分页命令:
$this->paginate = [
'limit' => 20,
'order' => [
'Iktato.evszam' => 'DESC',
'Iktato.iktatoszam' => 'DESC'
]
];
生成的查询:
SELECT
Iktato.id AS `Iktato__id`,
Iktato.iktatoszam AS `Iktato__iktatoszam`,
Iktato.evszam AS `Iktato__evszam`,
Iktato.datum AS `Iktato__datum`,
Iktato.honnan AS `Iktato__honnan`,
Iktato.felado AS `Iktato__felado`,
Iktato.cimzett AS `Iktato__cimzett`,
Iktato.targy AS `Iktato__targy`,
Iktato.tema AS `Iktato__tema`,
Iktato.iktatoszemely AS `Iktato__iktatoszemely`,
Iktato.megjegyzes AS `Iktato__megjegyzes`,
Iktato.allapot AS `Iktato__allapot`,
Iktato.user_id AS `Iktato__user_id`
FROM
iktato Iktato
ORDER BY
Iktato.evszam desc
LIMIT
20 OFFSET 20
生成的分页链接只有一个排序参数。我们怎样才能强迫Paginator助手考虑第二个参数呢?
答案 0 :(得分:0)
您可以使用自定义查找器完成此操作。在您的模型的表类中:
public function findOrdered(Query $query, array $options)
{
return $query
->order([
'Iktato.evszam' => 'DESC',
'Iktato.iktatoszam' => 'DESC'
]);
}
然后在你的控制器中:
$this->paginate = [
'limit' => 20,
'finder' => 'ordered',
];
有了这个,分页链接应该按预期工作,但如果你在视图中使用分页列排序($this->Paginator->sort('evszam')
等),你仍然会遇到问题。