我在yii2中有一个查询:
$models = Company::find()->where('name like :q', ['q'=>/* Array here */])->all();
你可以看到我想要添加到查询中的q元素数组。如何编写查询以便检查一个或多个q元素(数组大小未知)?
答案 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', ...)