Yii Query Builder其中LIKE子句

时间:2014-10-06 10:05:01

标签: php yii where sql-like

我坚持使用这段代码:

->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

我尝试了很多组合而没有结果。

请帮帮我。 感谢。

2 个答案:

答案 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

的更多详细信息