2011-06-17 122 views
0

我想将下面的mysql语句转换成cakephp查询语法。请帮助我。这是我的查询。 SELECT * FROM post WHERE (user_id == $id OR awarded_to = $id) AND id = $idcakephp find()问题

这是我的cakephp查询。这是错的吗。

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

回答

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

0

只需添加Post.id = $ ID下面的OR条件,而不给你“和”它是自动读取为和条件......

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

你非常接近与您的查询,只需要点点修改喜欢后除去 'AND' 条件在数组 'OR' 为:

$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',第二个选项将会是最适合您的选项。