开发者

cakephp find() question

开发者 https://www.devze.com 2023-03-13 11:21 出处:网络
I want to convert following mysql statement into cakephp query syntax.Please help me. Here is my query.SELECT * FROM post WHERE (user_id == $id OR awarded开发者_运维知识库_to = $id ) AND id = $id

I want to convert following mysql statement into cakephp query syntax.Please help me. Here is my query.SELECT * FROM post WHERE (user_id == $id OR awarded开发者_运维知识库_to = $id ) AND id = $id

Here is my cakephp query. is it wrong.

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


This one's on the house, but next time 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
            )
        ));

The 2 OR arrays need to be inside an array themself, and there's no need for AND.


Just add Post.id = $id below the OR condition without you give "and" it's automatic read as and condition...

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


You are very close with your query, just you need little modification like to remove 'AND' in conditions array after 'OR' as:

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

Or

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

The second option will be the best for you if you are passing tables primary key 'id' in AND conditions.

0

精彩评论

暂无评论...
验证码 换一张
取 消