我有这样的模型关系:
Project
有很多SubProject
有很多Item
我想设置一个containable
数组,以便我可以找到Item
属于特定 s 的所有 s Project
,并对结果进行分页。所以,在我的ItemsController
我有:
public $paginate = array(
'Item' => array(
'limit' => 10,
'order' => array('
'Item.create_time' => 'desc'
),
'contain' => array(
'SubProject' => array(
'Project'
)
)
)
);
显然,我需要在某个地方放置一个类似的条件"SubProject.project_id = $pid"
,但是我尝试过的任何方法都不会产生正确的结果。我能做到的最好的结果是这样的:
Array
(
[0] => Array
(
[Item] => Array
(
[id] => 13
[file_name] => foo.tar.gz
.... other keys ...
[create_time] => 2013-01-23 14:59:49
[subProject_id] => 4
)
[SubProject] => Array
(
[id] => 4
[name] => foo
[project_id] => 2
..... other keys ....
[Project] => Array
(
)
)
)
[1] => Array
.....
编辑:忽略不匹配的项目记录是完全正确的;我想跳过没有匹配项目记录的任何项目记录。
我已经想到手动指定我的 joins,但我觉得这不应该是必要的。
看起来这应该是显而易见的,但是,解决方案让我无法理解。