ThinkPHP5开发连载二十八之数据库查询构造器查询表达式

上一篇文章讲解“数据库查询构造器-删除数据”,本篇文章讲解“数据库查询构造器-查询表达式”。

查询表达式:

查询表达式支持大部分的SQL查询语法,也是ThinkPHP查询语言的精髓。

注意:

1. Field使用字段的驼峰命名方式。

表达式不分大小写,支持的查询表达式有下面几种:

1. 等于(=)

新建Index控制器,并新建equation方法:

预览:

2. 不等于()

修改Index控制器下的equation方法:

预览:

3. 大于(>)

修改Index控制器下的equation方法:

预览:

4. 大于等于(>=)

修改Index控制器下的equation方法:

预览:

5. 小于(

修改Index控制器下的equation方法:

预览:

6. 小于等于(

修改Index控制器下的equation方法:

预览:

7. [NOT] LIKE: 同sql的LIKE

1)like查询的基本使用

在Index控制器中,新建likeQuery方法

预览:

2)like查询支持使用数组

修改Index控制器下的likeQuery方法:

预览:

注意:

1. not like与like用法相同。

2. 为了更加方便,应该直接使用whereLike方法

Db::name('user')->whereLike('name','thinkphp%')->select();

Db::name('user')->whereNotLike('name','thinkphp%')->select();

8. [NOT] BETWEEN :同sql的[not] between

1)查询条件为字符串

在Index控制器中,新建betQuery方法:

预览:

2)查询条件为数组

修改Index控制器下面的betQuery方法:

预览:

注意:

1. 快捷的查询方式:

Db::name('user')->whereBetween('id','10,20')->select();

Db::name('user')->whereNotBetween('id','10,20')->select();

9. [NOT] IN:同sql的[not] in

1)查询条件为字符串

在Index控制器中,新建inQuery方法:

预览:

2)查询条件为数组

修改Index控制器下inQuery方法:

预览:

注意:

1. 快捷的查询方式:

Db::name('user')->whereIn('id','10,20,30')->select();

Db::name('user')->whereNotIn('id','10,20,30')->select();

2. [NOT] IN查询支持使用闭包方式。

10. [NOT] NULL

1)查询字段是否是NULL

在Index控制器中,新建nullQuery方法:

预览:

2)如果你需要查询一个字段的值为字符串null或者not null,使用以下方式

查询表中name字段值为null或not null的数据:

修改Index控制器下的nullQuery方法:

预览:

注意:

1. 推荐的方式是使用whereNull和whereNotNull方法查询:

Db::name('user')->whereNull('name')

->whereNull('email')

->whereNotNull('name')

->select();

11. EXP:表达式

EXP支持更复杂的查询情况。

在Index控制器中,新建expQuery方法:

预览:

注意:

1. exp查询的条件不会被当成字符串,所以后面的查询条件可以使用任何SQL支持的语法,包括使用函数和字段名称。

12. 动态查询

对于上面的查询表达式,可以使用动态查询方法进行简化。

在Index控制器中,新建dynQuery方法:

预览:

ThinkPHP5连载为卓象程序员原创,转载请联系卓象程序员

关注卓象程序员,定期发布技术文章

下一篇讲解“查询构造器-链式操作”

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180825A0NLJA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券