我想将以下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)
))
答案 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',则第二个选项最适合您。