Php Yii2,使用数组输入创建查询

Php Yii2,使用数组输入创建查询,php,yii2,Php,Yii2,我在yii2中有一个查询: $models = Company::find()->where('name like :q', ['q'=>/* Array here */])->all(); 您可以看到我有一个q元素数组,我想添加到查询中。如何编写查询,以便它检查数组大小未知的一个或多个q元素?根据:,IN条件可用于使用以下模式指定多种可能性: $models = Company::find()->where(['q'=>$qArray])->all();

我在yii2中有一个查询:

$models = Company::find()->where('name like :q', ['q'=>/* Array here */])->all();

您可以看到我有一个q元素数组,我想添加到查询中。如何编写查询,以便它检查数组大小未知的一个或多个q元素?

根据:,IN条件可用于使用以下模式指定多种可能性:

$models = Company::find()->where(['q'=>$qArray])->all();
这将生成如下SQL语句:

SELECT * FROM `company` WHERE q IN ('a','b'....);
SELECT *
FROM table_name
WHERE field_name LIKE '%one%'
   OR field_name LIKE '%two%'
   OR field_name LIKE '%three%'

假设$qArray变量的内容是数组'a','b',…

,根据:,IN条件可用于使用类似以下模式的方式指定多种可能性:

$models = Company::find()->where(['q'=>$qArray])->all();
这将生成如下SQL语句:

SELECT * FROM `company` WHERE q IN ('a','b'....);
SELECT *
FROM table_name
WHERE field_name LIKE '%one%'
   OR field_name LIKE '%two%'
   OR field_name LIKE '%three%'
假设$qArray变量的内容是数组'a','b',…

如果您确实需要SQL语句的类似条件,而不是在第二个答案中:

$query = Company::find();
foreach($words as $word){
    $query->orWhere(['like','q', $word]);
}
$models = $query->all();
这将生成SQL语句,如:

SELECT * FROM `company` WHERE q IN ('a','b'....);
SELECT *
FROM table_name
WHERE field_name LIKE '%one%'
   OR field_name LIKE '%two%'
   OR field_name LIKE '%three%'
如果您确实需要SQL语句的类似条件,而不是在第二个答案中:

$query = Company::find();
foreach($words as $word){
    $query->orWhere(['like','q', $word]);
}
$models = $query->all();
这将生成SQL语句,如:

SELECT * FROM `company` WHERE q IN ('a','b'....);
SELECT *
FROM table_name
WHERE field_name LIKE '%one%'
   OR field_name LIKE '%two%'
   OR field_name LIKE '%three%'

这是一个我从未想过的伟大解决方案。这是一个我从未想过的伟大解决方案。