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

时间:2015-04-17 12:47:43

标签: php yii2

我在yii2中有一个查询:

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

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

2 个答案:

答案 0 :(得分:5)

如果您的SQL语句确实需要LIKE条件而不是IN(请看第二个答案):

$query = Company::find();
foreach($words as $word){
    $query->orWhere(['like','q', $word]);
}
$models = $query->all();

这将生成如下的SQL语句:

SELECT *
FROM table_name
WHERE field_name LIKE '%one%'
   OR field_name LIKE '%two%'
   OR field_name LIKE '%three%'

答案 1 :(得分:3)

根据http://www.yiiframework.com/doc-2.0/guide-db-active-record.html的文档,IN条件可用于使用以下模式指定多种可能性:

$models = Company::find()->where(['q'=>$qArray])->all();

这将生成一个SQL语句,如:

SELECT * FROM `company` WHERE q IN ('a','b'....);

假设$qArray变量的内容为Array('a', 'b', ...)