在Yii的Model裡進行查詢的時候 where是必不可少的。
Where方法宣告為
字串中最簡單的where條件寫就可以,如
$condition = 'name='zhidemy.com' and age>10';
name-value格式的字典陣列:['column1' => value1, 'column2' => value2, ...]
['type' => 1, 'status' => 2]
//生成
(type = 1) AND (status = 2)
如果value值是數組,那麼會產生一個sql語中的如果value值是數組,那麼會產生一個g 中的
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
/betwen%。id IN (1, 2, 3)
注意:這個方法會對列進行引用,對數組中的值也會編碼。not in:
和上面的in 相似。name LIKE '%tester%'
如果值是數組的話,就會產生多個like來連接。如['like', 'name', ['test', 'sample']]
//生成 name LIKE '%test%' AND name LIKE '%sample%'注意:這個方法會對列進行引用,對數組中的值也會編碼。
有時候你可能需要自己來處理%,那麼可以用第三個參數:
['like', 'name', '%tester', false]//生成 name LIKE '%tester'第二個參數為數組的情況下用
or
來連接多個like 語句。
not like:和
like 相近。