ThinkPHP5开发连载三十六之数据库查询构造器高级查询一

上一篇文章讲解“数据库查询构造器-时间查询”,本篇文章讲解“数据库查询构造器-高级查询一”。

1. 快捷查询

快捷查询方式是一种多字段相同查询条件的简化写法,可以进一步简化查询条件的写法,在多个字段之间用 | 分割表示OR查询,用&分割表示AND查询,可以实现下面的查询。

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

预览:

注意:

1. 快捷查询支持所有的查询表达式。

2. 区间查询

区间查询是一种同一字段多个查询条件的简化写法。

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

预览:

注意:

1. 区间查询的查询条件必须使用数组定义方式,支持所有的查询表达式。

区间查询其实可以用下面的方式替代,更容易理解,因为查询构造器支持对同一个字段多次调用查询条件。

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

预览:

3. 批量(字段)查询

可以进行多个条件的批量条件查询定义。

1)基本使用

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

预览:

注意:

1. 注意,V5.1.7+版本数组方式如果使用exp查询的话,一定要用raw方法。

2)使用exp查询,用raw方法

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

预览:

注意:

1. 注意,相同的字段的多次查询条件可能会合并,如果希望某一个where方法里面的条件单独处理,可以使用下面的方式,避免被其它条件影响。

3)查询条件单独处理

一个数组查询条件

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

预览

多个数组查询条件

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

预览:

注意:

1. 善用多维数组查询,可以很方便的拼装出各种复杂的SQL语句。

2. where方法中加了“[ ]”,组成新数组的形式,不加也没问题。

4. 闭包查询

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

预览:

注意:

1. 可见每个闭包条件两边也会自动加上括号,但需要注意,使用闭包查询的时候不能使用cache(true)数据缓存,而应该使用指定key的方式例如cache('key')。

2. 如果不需要向闭包查询中传入变量,可以省略use。

5. 混合查询

可以结合前面提到的所有方式进行混合查询。

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

预览:

6. 字符串条件查询

对于一些实在复杂的查询,也可以直接使用原生SQL语句进行查询。

1)基本使用

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

预览:

2)对字符串查询条件使用参数绑定

为了安全起见,我们可以对字符串查询条件使用参数绑定。

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

预览:

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

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

下一篇讲解“查询构造器-高级查询二”

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180901A0RUYF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券