我有一个分页器如下:
var $paginate = array(
'order'=>array('ReleaseServer.server_environment'=>'ASC',
'ReleaseServer.server_name'=>'ASC'),
'joins'=>array(
array(
'table' => 'release_server_to_components',
'alias' => 'ReleaseServerToComponent',
'type' => 'LEFT',
'foreignKey' => false,
'conditions'=> array('ReleaseServer.id = ReleaseServerToComponent.release_server_id')
),
array(
'table' => 'release_components',
'alias' => 'ReleaseComponent',
'type' => 'LEFT',
'foreignKey' => false,
'conditions'=> array('ReleaseServerToComponent.release_component_id = ReleaseComponent.id')
)
),
'group'=>array('ReleaseServer.id'),
'contain' => array(
'ReleaseServerToComponent' => array(
'ReleaseComponent' => array(
'Release'
)
)
),
'limit' => 25,
);
然后在我的控制器功能中,我执行以下操作:
$this->set('allServers', $this->paginate('ReleaseServer', $conditions));
$conditions
是查询的一些额外条件。
如上所述,我将限制设定为25。
数据库中有29条记录,但页面只显示25条,页面上只显示一页。
但当某人点击其中一个列标题对其进行排序时,某些行在神奇地出现之前就不存在,而其他行则会消失。为什么会这样?
如果您需要任何其他信息,请告诉我
更新
现在我看到问题存在于group
变量的paginate
部分,但我需要它才能实现它,所以我不会得到多行相同的东西。
我该如何解决?
答案 0 :(得分:0)
我通过在我的模型中添加一个新的paginateCount()
函数来解决它:
function paginateCount($conditions = null, $recursive = 0, $extra = array())
{
$count = $this->find('count', array(
'fields' => 'DISTINCT ReleaseServer.id',
'conditions' => $conditions
));
return $count;
}