0

对于这个问题,这是关联树(所有->手段hasMany),所有数据库结构代码都遵守 CakePHP 约定。

Forum -> Section (forum_id) -> Topic (section_id) -> Reply (topic_id)

我想在$this->Reply->find某些条件下运行查询,并且我希望返回的$data["Reply"]数组只返回它们所属的回复forum_id=X

例如,我在$this->Reply->find某些条件下运行 a (这些无关紧要),它返回两个不同父级的结果,当你向上向上直到到达Forum.id(or Section.forum_id) 时,它们在forum_id.

我想要的是过滤结果,使它们属于某个forum_id. 由于forum_id不是Reply模型本身的字段,而是在Section(这是两个“层”上),我不能使用conditions条目来过滤结果。

我应该怎么办?

4

1 回答 1

2

就这么简单:

<?php
$this->Reply->find('all', array(
    'joins' => array(
        Reply::joinLeft('Topic'),
        Topic::joinLeft('Section'),
        Section::joinLeft('Forum'),
    ),
    'conditions' => array('Forum.id' => $forumId),
));

https://github.com/tigrang/EasyJoin - 这将确定模型之间的关系并为您创建连接数组。

如果您不想使用该插件,则必须手动指定连接数组或重新绑定模型才能使用 Containable,因为它当前会创建多个查询而不是连接。

于 2012-08-11T06:22:53.827 回答