Paginate基于cakephp上包含的表格

时间:2013-04-01 16:20:53

标签: php cakephp cakephp-2.0 paginate

我正在使用cakephp开发CMS,我有2个表需要通过一些参数进行过滤,并且为了优化我必须从“hasMany”模型开始查询,简单的方法是将其设置为“belongsTo” “模特。

class Client extends AppModel {
    public $actsAs = array('Containable');

    public $hasMany = array('Projects');
}

class Project extends AppModel {
    public $actsAs = array('Containable');

    public $belongsTo = array('Client');
}

我在$ conditions数组中有where条件。

$this->paginate = array(
                'Client' => array(
                    'limit' => 20,
                    'conditions' => $conditions,
                    'contain' => array(
                        'Project' => array(
                            //'limit' => 20
                        )
                    )
                )
            );
$this->set('clients', $this->paginate('Client'));

通过这种方式,我获得了20个客户端和每个客户端内的所有项目。如果我取消注释该行,我将在20个客户中的每一个内部获得20个项目。

我完全想要20个项目,无论有多少客户(最多20个)。

任何人都可以帮助我吗?

提前致谢。

1 个答案:

答案 0 :(得分:-1)

如果您想要显示项目,则应该对项目进行分页;

$this->paginate = array(
    'Project' => array(
        'limit' => 20,
            'conditions' => $conditions,

            // no need to set a limit on 'client',
            // as each project belongs to only one client
            'contain' => array(
                'Client'
            )
        )
);

$this->set('projects', $this->paginate('Project'));

Project模型添加到控制器内的$uses数组中可能是必要的