andFilterWhere与来自数组的OR LIKE

时间:2018-07-07 08:17:08

标签: php yii2

这是关键字

$keywords = ['html','css','js','php','yii2']

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

$query->orFilterWhere(["LIKE","skill_name",$val]);

它给出了以下结果

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%'

我要在

之后的位置进行此查询
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%'

1 个答案:

答案 0 :(得分:3)

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

$query->andFilterWhere(['OR LIKE', 'skill_name', $val]);

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


or中的

orFilterWhere()定义了如何将新条件连接到现有条件。因此,如果您有:

$query->orFilterWhere('some condition 1')->orFilterWhere('some condition 2');

它将生成类似:

WHERE some condition 1 OR some condition 2

介于OR之间的条件来自orFilterWhere()