查詢我在yii2查詢:Yii2,創建數組輸入
$models = Company::find()->where('name like :q', ['q'=>/* Array here */])->all();
你可以看到,我有Q-元素我要添加到查詢的數組。我該如何編寫查詢,以便檢查一個或多個q元素(數組大小未知)?
查詢我在yii2查詢:Yii2,創建數組輸入
$models = Company::find()->where('name like :q', ['q'=>/* Array here */])->all();
你可以看到,我有Q-元素我要添加到查詢的數組。我該如何編寫查詢,以便檢查一個或多個q元素(數組大小未知)?
如果你真的需要LIKE
條件爲你的SQL語句,而不是IN
(看第二個答案):
$query = Company::find();
foreach($words as $word){
$query->orWhere(['like','q', $word]);
}
$models = $query->all();
這將生成SQL staement這樣的:
SELECT *
FROM table_name
WHERE field_name LIKE '%one%'
OR field_name LIKE '%two%'
OR field_name LIKE '%three%'
按照該文檔: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', ...)
感謝,偉大的工程 –
這是一個很好的解決方案,我從來沒有想過。 – nunorbatista