首頁  >  文章  >  後端開發  >  Yii20中文開發精靈-Where條件查詢全解析

Yii20中文開發精靈-Where條件查詢全解析

WBOY
WBOY原創
2016-08-08 09:18:571239瀏覽

在Yii的Model裡進行查詢的時候 where是必不可少的。
Where方法宣告為

  1. static where( $condition )

字串中最簡單的where條件寫就可以,如


$condition = 'name='zhidemy.com' and age>10';

2、數組如果是數組的情況下,有兩種格式的寫法。


name-value格式的字典陣列:['column1' => value1, 'column2' => value2, ...]

    邏輯運算子格式:[operator, operand1, operand2, ...]
  • 第一種寫法:
  • 如果value值是字串或數字等,那麼產生的條件語句格式為
  • column1=value1 AND column2=value2 AND ....


['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: 
    • 會使用 AND把所有的運算元連接起來。如

      ['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)

      注意:這個方法不會對進行引用或編碼操作。
    • or: 
    • 和 and 類似,只不過是用 OR來連接運算元。
    • between:
    •  第一個操作數是列的名稱,第二個和第三個操作數為範圍的最小值和最大值。如

      ['between', 'id', 1, 10]

      //生成 

      id BETWEEN 1 AND 10

      /betwen%。
    • in: 第一個操作數為列或DB表達式,第二個操作數為數組, 如
    • ['in', 'id', [1, 2, 3]]
    • //生成 

      id IN (1, 2, 3)

      注意:這個方法會對列進行引用,對數組中的值也會編碼。

      not in:

       和上面的in 相似。
    • like: 第一個運算元為列或DB表達式,第二個運算元或陣列如
    • ['like', 'name', 'tester'] 
    • //產生 

      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 相近。
    • or not like: 和or like 相似。
    • 以上就介紹了Yii20中文開發嚮導-Where條件查詢全解析,包含了方面的內容,希望對PHP教程有興趣的朋友有所幫助。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn