Yii2在一边添加LIKE条件和“%”wildard

时间:2016-09-03 07:54:48

标签: mysql yii2

我想在like条件中添加%条件,例如:

where name like 'value%'

我的代码:

Table::find()->filterWhere(['like', 'name' , $_GET['q'].'%' ])
        ->all();

但查询结果是:

 where name like '%value\%%'

2 个答案:

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