CakePHP paginator没有分页

时间:2011-09-15 17:30:22

标签: php cakephp pagination

我有一个分页器如下:

    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部分,但我需要它才能实现它,所以我不会得到多行相同的东西。

我该如何解决?

1 个答案:

答案 0 :(得分:0)

我通过在我的模型中添加一个新的paginateCount()函数来解决它:

function paginateCount($conditions = null, $recursive = 0, $extra = array())
{
     $count = $this->find('count', array(
        'fields' => 'DISTINCT ReleaseServer.id',
        'conditions' => $conditions
    ));
    return $count;
}