cakephp find()问题

时间:2011-06-17 08:44:15

标签: cakephp

我想将以下mysql语句转换为cakephp查询语法。请帮帮我。这是我的查询。SELECT * FROM post WHERE (user_id == $id OR awarded_to = $id ) AND id = $id

这是我的cakephp查询。是不对的。

 $this->Post->find('all', 
            array('conditions' => array('OR' =>
                                        array('Post.user_id' => $id),
                                        array('Post.awarded_to' => $id)
                                        ),
                                        'AND' =>
                                        array('Post.id' => $id)
                ))

3 个答案:

答案 0 :(得分:4)

这个人在房子里,但下次read the docs

   $this->Post->find('all', array(
            'conditions' => array(
                'OR' =>  array(
                    array('Post.user_id' => $id),
                    array('Post.awarded_to' => $id)
                ),
                'Post.id' => $id
            )
        ));

2个OR数组本身需要在数组中,并且不需要AND

答案 1 :(得分:0)

只需在OR条件下面添加Post.id = $ id,而不用“和”它自动读取和条件......

$this->Post->find('all', array(
         'conditions' => array(
             'OR' => array('Post.user_id' => $id),
              array('Post.awarded_to' => $id)
         ),
         'Post.id' => $id
    ));

答案 2 :(得分:0)

您的查询非常接近,只需要稍微修改就像在'OR'之后删除条件数组中的'AND':

$this->Post->find('all', array(
        'conditions' => array(
            'OR' =>  array(
                array('Post.user_id' => $id),
                array('Post.awarded_to' => $id)
            ),
            'Post.id' => $id
        )
    ));

或者

$this->Post->find('all', array(
        'conditions' => array(
            'Post.id' => $id
        )
    ));

如果您在AND条件中传递表主键'id',则第二个选项最适合您。