问题描述
|
如何限制cakePHP中的分页?
假设我有400条记录。
我只需要从25条记录到75条记录中获得25条记录
并且每页需要显示5条记录。
我该如何做到分页?
样例代码:
$this->paginate = array(
\'contain\'=>array(\'User\'),\'recursive\' => 2,\'order\' => array(\'Profile.winning\' => \'DESC\'),\'limit\' =>5
);
解决方法
您可以设置分页条件。
function listRecords()
{
$this->paginate = array(
\'conditions\' => array(\'Model.id >=\' => 50,\'Model.id <=\' => 75),\'limit\' => 5
);
$this->paginate(\'Model\');
);
编辑:
来自这里的解决方案:
$this->paginate = array(
\'limit\' => 20,\'totallimit\' => 1000
);
然后在模型中:
public function paginateCount($conditions = null,$recursive = 0,$extra = array())
{
if( isset($extra[\'totallimit\']) ) return $extra[\'totallimit\'];
}
, 参考以下版本的改进版本:http://www.mainelydesign.com/blog/view/best-paginatecount-cakephp-with-group-by-support
这将返回较小的正确总数。
public function paginateCount($conditions = null,$extra = array())
{
$conditions = compact(\'conditions\');
if ($recursive != $this->recursive) {
$conditions[\'recursive\'] = $recursive;
}
unset( $extra[\'contain\'] );
$count = $this->find(\'count\',array_merge($conditions,$extra));
if (isset($extra[\'group\'])) {
$count = $this->getAffectedRows();
}
if (isset($extra[\'totallimit\']) && $extra[\'totallimit\'] < $count) {
return $extra[\'totallimit\'];
}
return $count;
}
, 在CakePHP v2.x中使用ѭ5。
public $paginate = array(
// other keys here.
\'maxLimit\' => 10
);
在这里阅读更多有关它的信息。
, $query = $this->User->find(\'all\',[
\'recursive\' => 2,\'order\' => array(\'Profile.winning\' => \'DESC\'),\'limit\' => 25,\'offset\' => 50
]);
$this->paginate = array(
$query,\'limit\' => 5
);