入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

Yii的where方法使用大全

创建时间:2015-09-19 投稿人: 浏览次数:8645

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


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。