Yii的where方法使用大全

xiaoxiao2021-02-28  76

PHP工程师说白了也是CURD工程师,所做的工作无非是各种业务的CURD,掌握各种where的使用,MM再也不用担心我的程式会被攻击了~

Yii中,使用where方法是非常频繁的,而且where方法本身的使用技巧比较的多,在这里我梳理了一些常用的,以便于以后工作中的随时查阅的需要,也希望能帮助到查阅此文的你,也欢迎各位的补充,不足之处希望指出!

还是从简入深吧!ps:这里的数据表是进行模拟的。

1)简单的赋值

[php]  view plain  copy ->where("id=:id", [       'id' => 1   ])  

上面的程式等同于 id=1

2)AND查询

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

或者

[php]  view plain  copy ->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查询

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

[php]  view plain  copy ->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 混合查询

[php]  view plain  copy ->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查询

[php]  view plain  copy ->where([       'in''id', [1, 3, 5, 6]   ])   上面程式等同于 id in (1, 3, 5, 6)

[php]  view plain  copy ->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))

更为麻烦点的例子

[php]  view plain  copy ->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 查询

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

复杂的使用方法和上述的IN是一样的,参考即可。

7)LIKE 查询

[php]  view plain  copy ->where([       'like''pack_name''%sandbox%'   ])   上面程式等同于`pack_name` LIKE '%sandbox%'

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

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

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

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

[php]  view plain  copy ->where([       'not like''pack_name', [           '%sandbox%',           'com.famigo%'       ]   ])  
转载请注明原文地址: https://www.6miu.com/read-82424.html

最新回复(0)