Cake PHP:在更深层次的递归上查找条件

时间:2014-04-11 10:55:54

标签: php mysql cakephp

我的模型的相关内容如下:

Post BELONGS_TO Parent
Parent HAS_MANY ParentAdmin 

现在,如果符合帖子的属性值,我希望找到所有帖子的所有家长管理员。等效的sql查询是:

SELECT parent_admins.* FROM posts 
LEFT JOIN parents AS Parent ON Parent.id = posts.target_id    
LEFT JOIN parent_admins ON parent_admins.parent_id = Parent.id 
WHERE posts.admin_notification = 0 AND Parent.maxtime > posts.created

假设模型在cakephp中相应地链接到recursive = 2,查找查询中的条件数组是什么?

3 个答案:

答案 0 :(得分:2)

你们都可以使用bindModel& unbindModel方法可以获得您想要的确切查询,也可以使用Containable behavior

有关如何使用CakePHP动态创建和销毁关联的更多信息:http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#creating-and-destroying-associations-on-the-fly

你需要这一系列条件:

$conditions = array(
    'Post.admin_notification' => 0,
    'Parent.maxtime >' => 'Post.created'
);

答案 1 :(得分:0)

根据您的询问: -

$conditions=array(
                 'posts.admin_notification'=>0,
                 'Parent.maxtime >'=>'posts.created'
                 );

答案 2 :(得分:0)

如果您的查询完成了这项工作:
Inside PostsController:

    $query = "SELECT parent_admins.* FROM posts 
    LEFT JOIN parents AS Parent ON Parent.id = posts.target_id    
    LEFT JOIN parent_admins ON parent_admins.parent_id = Parent.id 
    WHERE posts.admin_notification = 0 AND Parent.maxtime > posts.created"

    $result = $this->Posts->query($query);
    $debug($result);