andFilterWhere 与 OR LIKE 来自数组

Shr*_*gan 2 php yii2

这是关键词

$keywords = ['html','css','js','php','yii2']
Run Code Online (Sandbox Code Playgroud)

这是来自模型的Yii查询过滤器

$query->orFilterWhere(["LIKE","skill_name",$val]);
Run Code Online (Sandbox Code Playgroud)

它给出了以下结果

WHERE `skill_name` LIKE '%html%'
   AND `skill_name` LIKE '%css%'
   AND `skill_name` LIKE '%js%'
   AND `skill_name` LIKE '%php%'
   AND `skill_name` LIKE '%yii2%'
Run Code Online (Sandbox Code Playgroud)

我想要在 where 之后的这个查询

WHERE `skill_name` LIKE '%html%'
   OR `skill_name` LIKE '%css%'
   OR `skill_name` LIKE '%js%'
   OR `skill_name` LIKE '%php%'
   OR `skill_name` LIKE '%yii2%'
Run Code Online (Sandbox Code Playgroud)

rob*_*006 5

您需要在or like这种情况下使用:

$query->andFilterWhere(['OR LIKE', 'skill_name', $val]);
Run Code Online (Sandbox Code Playgroud)

https://www.yiiframework.com/doc/api/2.0/yii-db-queryinterface#where()-detail


orinorFilterWhere()定义了如何将新条件加入现有条件。所以如果你有:

$query->orFilterWhere('some condition 1')->orFilterWhere('some condition 2');
Run Code Online (Sandbox Code Playgroud)

它会产生类似的东西:

WHERE some condition 1 OR some condition 2
Run Code Online (Sandbox Code Playgroud)

OR之间的条件来自orFilterWhere()