Yii的where方法使用大全

PHP工程師說白了也是CURD工程師,所做的工作無非是各種業務的CURD,掌握各種where的使用,MM再也不用擔心我的程式會被攻擊了~

Yii中,使用where方法是非常頻繁的,而且where方法本身的使用技巧比較的多,在這裏我梳理了一些常用的,以便於以後工作中的隨時查閱的需要,也希望能幫助到查閱此文的你,也歡迎各位的補充,不足之處希望指出!

還是從簡入深吧!ps:這裏的數據表是進行模擬的。

1)簡單的賦值

->where("id=:id", [
    'id' => 1
])

上面的程式等同於 id=1


2)AND查詢

->where("id=:id and pack_name=:pack_name", [
    ':id' => 1,
    ':pack_name' => 'com.famigo.sandbox'
])

或者

->where([
    'and',
    'id=:id',
    'pack_name=:pack_name'
], [
    ':id' => 1,
    ':pack_name' => 'com.famigo.sandbox'
])
這兩種程式等同於 id=1 AND pack_name='com.famigo.sandbox'

3)OR查詢

->where("id=:id or pack_name=:pack_name", [
    ':id' => 1,
    ':pack_name' => 'com.famigo.sandbox'
])
或者

->where([
    'or',
    'id=:id',
    'pack_name=:pack_name'
], [
    ':id' => 1,
    ':pack_name' => 'com.famigo.sandbox'
])
這兩種程式等同於 id=1 OR pack_name='com.famigo.sandbox'

4)AND OR 混合查詢

->where([
    'and',
    'display=:display',
    [
        'or',
        'id=:id1',
        'id=:id2'
    ]
], [
    ':display' => 1,
    ':id1' => 1,
    ':id2' => 2
])
上面的程式等同於(display=1) AND ((id=1) OR (id=2))

5)IN查詢

->where([
    'in', 'id', [1, 3, 5, 6]
])
上面程式等同於 id in (1, 3, 5, 6)

->where([
    'and',
    'display=:display',
    'lang=:lang',
    [
    'in', 'id', [1, 3, 5, 6]
    ]
], [
    ':display' => 1,
    ':lang' => 2
])
上面程式等同於 (display=1) AND (lang=2) AND (`id` IN (1, 3, 5, 6))

更爲麻煩點的例子

->where([
    'or',
    [
        'and',
        'display=:display1',
        [
        'in', 'id', [1, 3, 5, 6]
        ]
    ],
    [
        'and',
        'display=:display2',
        [
        'in', 'id', [2, 4, 8, 9]
        ]
    ]
], [
    ':display1' => 1,
    ':display2' => 2,
])
上面程式等同於((display=1) AND (`id` IN (1, 3, 5, 6))) OR ((display=2) AND (`id` IN (2, 4, 8, 9)))

6)NOT IN 查詢

->where([
    'not in', 'id', [1, 2, 4, 3]
])
上面程式等同於`id` NOT IN (1, 2, 4, 3)

複雜的使用方法和上述的IN是一樣的,參考即可。

7)LIKE 查詢

->where([
    'like', 'pack_name', '%sandbox%'
])
上面程式等同於`pack_name` LIKE '%sandbox%'

->where([
    'like', 'pack_name', [
        '%sandbox%',
        'com.famigo%'
    ]
])

上面程式等同於`pack_name` LIKE '%sandbox%' AND `pack_name` LIKE 'com.famigo%'

->where([
    'or like', 'pack_name', [
        '%sandbox%',
        'com.famigo%'
    ]
])
上面程式等同於`pack_name` LIKE '%sandbox%' OR `pack_name` LIKE 'com.famigo%'

->where([
    'or not like', 'pack_name', [
        '%sandbox%',
        'com.famigo%'
    ]
])
上面程式等同於`pack_name` NOT LIKE '%sandbox%' OR `pack_name` NOT LIKE 'com.famigo%'

->where([
    'not like', 'pack_name', [
        '%sandbox%',
        'com.famigo%'
    ]
])
上面程式等同於`pack_name` NOT LIKE '%sandbox%' AND `pack_name` NOT LIKE 'com.famigo%'

LIKE複雜的使用方法請參考IN,都是類似的。

先總結這些吧,其他的也沒想到~

誰轉載不寫我的出處,生兒子沒屁眼~

原創地址:http://blog.csdn.net/liruxing1715/article/details/48575025


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章