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

Hos*_*med 6 mysql yii2

我想在一边添加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'.


kil*_*ill 5

您可以使用:

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