在Yii的Model裡進行查詢的時候 where是必不可少的。
Where方法聲明為
其中參數 $condition類型為字符串或者數組
1、字符串
字符串是最簡單的,直接按sql中的where條件寫就可以,如
2、數組
如果是數組的情況下,有兩種格式的寫法。
第一種寫法:
如果value值是字符串或者數字等,那麼生成的條件語句格式為column1=value1 AND column2=value2 AND ....
['type' => 1, 'status' => 2]
//生成
(type = 1) AND (status = 2)
如果value值是數組,那麼會生成sql 中的IN語句;
['id' => [1, 2, 3], 'status' => 2]
//生成
(id IN (1, 2, 3)) AND (status = 2)
如果value值為Null,那麼會生成 Is Null語句。
['status' => null]
//生成
status IS NULL
第二種寫法會根據不同的操作符生成不同的sql條件。
['and', 'id=1', 'id=2']
// 生成
id=1 AND id=2
如果某個運算數也是數組,那麼會按如下格式轉換為字符串,如['and', 'type=1', ['or', 'id=1', 'id=2']]
//生成
type=1 AND (id=1 OR id=2)
注意:這個方法不會對進行引用或者編碼操作。['between', 'id', 1, 10]
//生成
id BETWEEN 1 AND 10
['in', 'id', [1, 2, 3]]
//生成
id IN (1, 2, 3)
注意:這個方法會對列進行引用,對數組中的值也會編碼。['like', 'name', 'tester']
//生成
name LIKE '%tester%'
如果值是數組的話,會生成多個like語句,並用 AND來連接。如['like', 'name', ['test', 'sample']]
//生成
name LIKE '%test%' AND name LIKE '%sample%'
注意:這個方法會對列進行引用,對數組中的值也會編碼。['like', 'name', '%tester', false]
//生成
name LIKE '%tester'