
Yii 1.1 框架提供了强大的 ActiveRecord 模式和 CDbCriteria 类,极大地简化了数据库查询的构建。其中,addSearchCondition 方法是进行模糊搜索的常用工具,它能方便地生成 WHERE property LIKE "%FOOBAR%" 这样的查询语句。
例如,要查询 property 字段包含 "FOOBAR" 的所有记录,可以这样实现:
$criteria = new CDbCriteria();
$criteria->addSearchCondition('property', 'FOOBAR');
$result = Table::model()->findAll($criteria);
// 这将生成类似 SELECT * FROM table WHERE property LIKE '%FOOBAR%' 的SQL然而,在某些场景下,我们需要构建相反的条件,例如查询不包含特定关键词的数据,即 WHERE property NOT LIKE "%FOOBAR%"。addSearchCondition 方法的设计非常灵活,它允许我们通过指定其第五个参数来精确控制所使用的 SQL 比较操作符。
CDbCriteria::addSearchCondition() 方法的完整签名如下:
public CDbCriteria addSearchCondition(string $column, string $value, boolean $partialMatch=true, string $operator='AND', string $likeOperator='LIKE')
各个参数的含义如下:
因此,要构建 SELECT * FROM table WHERE property NOT LIKE "%FOOBAR%" 这样的查询,可以这样实现:
$criteria = new CDbCriteria();
// 构建 NOT LIKE 查询
// 参数1: 列名 'property'
// 参数2: 关键词 'FOOBAR'
// 参数3: partialMatch 保持为 true (默认值,生成 %FOOBAR%)
// 参数4: operator 保持为 'AND' (默认值)
// 参数5: likeOperator 设置为 'NOT LIKE'
$criteria->addSearchCondition('property', 'FOOBAR', true, 'AND', 'NOT LIKE');
// 执行查询
$result = Table::model()->findAll($criteria);这段代码会生成类似 WHERE property NOT LIKE '%FOOBAR%' 的 SQL 语句,精确满足了不包含特定关键词的查询需求。
通过巧妙利用 CDbCriteria::addSearchCondition 方法的第五个参数 $likeOperator,开发者可以轻松地将默认的 LIKE 行为反转为 NOT LIKE,或者使用其他自定义的 SQL 比较操作符。这极大地增强了 Yii 1.1 中构建复杂查询的灵活性和表达能力,是提升应用数据检索能力的重要技巧。理解并善用这一特性,能够帮助您更高效、安全地处理各种数据库查询需求。
以上就是Yii 1.1 CDbCriteria 进阶:构建 NOT LIKE 查询条件的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号