我想在一边添加like带%通配符的条件,例如:
where name like 'value%'
Run Code Online (Sandbox Code Playgroud)
我的代码:
Table::find()->filterWhere(['like', 'name' , $_GET['q'].'%' ])
->all();
Run Code Online (Sandbox Code Playgroud)
但查询结果是:
where name like '%value\%%'
Run Code Online (Sandbox Code Playgroud)
nad*_*dar 20
您需要设置第三个操作数false,以便在类似条件的地方使用自定义:
Table::find()->where(['like', 'name', $_GET['q'] . '%', false]);
Run Code Online (Sandbox Code Playgroud)
来自文档:
有时,您可能希望自己将百分比字符添加到匹配值,您可以提供第三个操作数
false来执行此操作.例如,['like', 'name', '%tester', false]将生成name LIKE '%tester'.
您可以使用:
Table::find()->where(new \yii\db\Expression('name LIKE :term', [':term' => $_GET['q'] . '%']));
Run Code Online (Sandbox Code Playgroud)
或者
Table::find()->where(['like', 'name', $_GET['q'] . '%', false]);
Run Code Online (Sandbox Code Playgroud)
或者
$likeCondition = new \yii\db\conditions\LikeCondition('name', 'LIKE', $_GET['q'] . '%');
$likeCondition->setEscapingReplacements(false);
Table::find()->where($likeCondition);
Run Code Online (Sandbox Code Playgroud)
更多信息请访问https://www.yiiframework.com/doc/api/2.0/yii-db-conditions-likecondition
| 归档时间: |
|
| 查看次数: |
5674 次 |
| 最近记录: |