我正在使用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个)。
任何人都可以帮助我吗?
提前致谢。
答案 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
数组中可能是必要的