Yii1.1框架中如何反转addSearchCondition查询条件?
实现方案
你可以直接调用addSearchCondition方法的第五个可选参数调整匹配运算符,直接实现NOT LIKE的查询效果,示例代码如下:
$criteria = new CDbCriteria(); // 第五个参数传入 'NOT LIKE' 替换默认的 'LIKE' 即可实现反向匹配 $criteria->addSearchCondition('property', 'FOOBAR', true, 'AND', 'NOT LIKE'); $result = Table::model()->findAll($criteria);
参数说明
- 第三个参数
true为默认值,会自动对搜索关键词中的特殊字符进行转义,避免SQL注入风险 - 第四个参数
'AND'为默认值,代表该条件和其他查询条件用AND连接,有需要可以改成'OR'
如果你需要手动拼接条件的话,也可以用addNotCondition实现,写法如下:
$criteria = new CDbCriteria(); $criteria->addNotCondition('property LIKE :foobar'); $criteria->params[':foobar'] = '%FOOBAR%'; $result = Table::model()->findAll($criteria);
注:你给出的示例SQL中
IS NOT LIKE属于非标准写法,标准SQL中直接使用NOT LIKE即可,上述两种Yii写法生成的都是标准语法的SQL语句,和你预期的查询效果完全一致。
内容的提问来源于stack exchange,提问作者k0pernikus
相关产品推荐
相关产品推荐

