我坚持使用这段代码:
->select ('t1.id_i, t2.status')
->from ('table1 as t1, table2 as t2')
->where(array('or', 'id_i'=>$model->id, array('like', 't2.status', '%Beginner%')))
这是我想要的
WHERE t1.id_i=$model->id AND/OR t2.status LIKE "Beginner" //AND/OR are optional combination
我尝试了很多组合而没有结果。
请帮帮我。 感谢。
答案 0 :(得分:0)
我认为问题在于CDbCommand
where()
方法不支持在 $conditions
内使用键值对您在此处执行的数组:'id_i'=>$model->id_e
。该绑定需要通过$params
参数进行。
除此之外,我还建议使用带有值绑定的字符串而不是数组语法,因为它会使代码更容易阅读。
以下是调用where()
的修改代码:
->where('id_i = :id_e OR t2.status LIKE "%Beginner%"', array(':id_e' => $model->id_e))
您可以看到它更接近最终的SQL,这使得调试更容易。
如果您决定使用原始语法,请尝试改为:
->where(array('or', 'id_i = :id_e', array('like', 't2.status', '%Beginner%')), array(':id_e' = $model->id_e))
答案 1 :(得分:0)
尝试将where子句放在where()方法上,在CDbCommand类上,where()方法指定查询的WHERE部分,第一个argumnet是查询条件,第二个参数是参数(name => value)是绑定到查询。
->select ('t1.id_i, t2.status')
->from ('table1 as t1, table2 as t2')
->where('t1.id_i=:id_i OR t2.status LIKE "%:status%"',array(':id_i' => $model->id,':status' => 'Beginner'))
有关CDbCommand where()方法here
的更多详细信息