我想在like
条件中添加%
条件,例如:
where name like 'value%'
我的代码:
Table::find()->filterWhere(['like', 'name' , $_GET['q'].'%' ])
->all();
但查询结果是:
where name like '%value\%%'
答案 0 :(得分:16)
您需要将第三个操作数设置为false
,以便在类似条件的地方使用自定义:
Table::find()->where(['like', 'name', $_GET['q'] . '%', false]);
来自docs:
有时,您可能希望将百分比字符添加到 如果您自己匹配值,则可以提供第三个操作数
false
所以。例如,['like', 'name', '%tester', false]
将生成name LIKE '%tester'
。
答案 1 :(得分:1)
您可以使用:
Table::find()->where(new \yii\db\Expression('name LIKE :term', [':term' => $_GET['q'] . '%']));
OR:
Table::find()->where(['like', 'name', $_GET['q'] . '%', false]);
OR
$likeCondition = new \yii\db\conditions\LikeCondition('name', 'LIKE', $_GET['q'] . '%');
$likeCondition->setEscapingReplacements(false);
Table::find()->where($likeCondition);