官方提供了非常强大的链式语法
不知道的时候可以查看以下连接
https://www.kancloud.cn/manual/thinkphp5/135180
# 链式操作
[![](https://e.topthink.com/api/item/378/pic)](https://e.topthink.com/api/go/e71e2262b93e6c90e)
数据库提供的链式操作方法,可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的CURD操作。
使用也比较简单,假如我们现在要查询一个User表的满足状态为1的前10条记录,并希望按照用户的创建时间排序 ,代码如下:
~~~
Db::table('think_user')
->where('status',1)
->order('create_time')
->limit(10)
->select();
~~~
这里的`where`、`order`和`limit`方法就被称之为链式操作方法,除了select方法必须放到最后一个外(因为select方法并不是链式操作方法),链式操作的方法调用顺序没有先后,例如,下面的代码和上面的等效:
~~~
Db::table('think_user')
->order('create_time')
->limit(10)
->where('status',1)
->select();
~~~
其实不仅仅是查询方法可以使用连贯操作,包括所有的CURD方法都可以使用,例如:
~~~
Db::table('think_user')
->where('id',1)
->field('id,name,email')
->find();
Db::table('think_user')
->where('status',1)
->where('id',1)
->delete();
~~~
链式操作在完成查询后会自动清空链式操作的所有传值。简而言之,链式操作的结果不会带入后面的其它查询。
系统支持的链式操作方法有:
| 连贯操作 | 作用 | 支持的参数类型 |
| --- | --- | --- |
| where\* | 用于AND查询 | 字符串、数组和对象 |
| whereOr\* | 用于OR查询 | 字符串、数组和对象 |
| wheretime\* | 用于时间日期的快捷查询 | 字符串 |
| table | 用于定义要操作的数据表名称 | 字符串和数组 |
| alias | 用于给当前数据表定义别名 | 字符串 |
| field\* | 用于定义要查询的字段(支持字段排除) | 字符串和数组 |
| order\* | 用于对结果排序 | 字符串和数组 |
| limit | 用于限制查询结果数量 | 字符串和数字 |
| page | 用于查询分页(内部会转换成limit) | 字符串和数字 |
| group | 用于对查询的group支持 | 字符串 |
| having | 用于对查询的having支持 | 字符串 |
| join\* | 用于对查询的join支持 | 字符串和数组 |
| union\* | 用于对查询的union支持 | 字符串、数组和对象 |
| view\* | 用于视图查询 | 字符串、数组 |
| distinct | 用于查询的distinct支持 | 布尔值 |
| lock | 用于数据库的锁机制 | 布尔值 |
| cache | 用于查询缓存 | 支持多个参数 |
| relation\* | 用于关联查询 | 字符串 |
| with\* | 用于关联预载入 | 字符串、数组 |
| bind\* | 用于数据绑定操作 | 数组或多个参数 |
| comment | 用于SQL注释 | 字符串 |
| force | 用于数据集的强制索引 | 字符串 |
| master | 用于设置主服务器读取数据 | 布尔值 |
| strict | 用于设置是否严格检测字段名是否存在 | 布尔值 |
| sequence | 用于设置Pgsql的自增序列名 | 字符串 |
| failException | 用于设置没有查询到数据是否抛出异常 | 布尔值 |
| partition | 用于设置分表信息 | 数组 字符串 |
- 文件作用与框架文件说明
- 助手函数
- 系统常量(常用与自定义)
- 自定义配置文件extra(文件夹)
- 自定义配置文件.Env
- 路由pathinof 方式
- 路由强制模式(主要用这个)
- 路由的请求方法几种常用
- 路由参数规则设置
- 路由分组闭包与MISS路由
- 资源路由
- 请求Request和参数过滤
- session和cookie的配置及获取
- 判断路由请求类型及Request注册方法
- 响应数据方法create
- json xml jsonp助手函数
- 改命名空间(改成自定义的)
- (controller里常用的方法)success与error重定向的使用nignx重写的配置
- _initialize构造函数
- beforeAction前置操作使用
- 空路由与多级控制器使用
- 连接数据库操作(ORM)
- 助手函数db()
- 插入数据库操作(ORM)
- 查询数据库操作(ORM)
- (链式语法)where条件查询数据库(ORM)
- (链式语法)只查询某个字段或者排除某个字段链式操作field(ORM)
- (链式语法)排序查询order(ORM)
- (链式语法)查询条数limit(ORM)
- (链式语法)查询多条重复数据只返回一个distinct方法查询(ORM)
- (链式语法)获取mysql语句fetchSql(ORM)
- (链式语法)查询改表名输出alias(ORM)
- 连表查询join() (ORM)
- 数据库事务监听(ORM)
- (改数据)更新数据库(ORM)
- (改数据)更新数据库之自增与自减(ORM)
- 链式操作语法(ORM)
- (删除数据)删除数据(ORM)
- model模型创建方法
- (增)插入数据(Model)
- (查)查询数据(Model)
- 关于类 (杂项整理)
- (查)动态查询数据(Model)
- (改)更新数据库(Model)
- (删)删除数据(Model)
- 数据表时间戳(Model)
- view视图创建与渲染模板
- view视图输出与调用
- view输出常量与Session 与Cookie值
- view输出函数以及过滤
- view视图循环输出与if判断
- view各项配置以及修改(自定义资源路径)
- view各项配置以及修改(修改模板起始符)
- view 模板引入和自定义配置
- view模板继承
- thinkphp 实战命令行生成模块控制器模型视图
- Validate登录验证使用方法
- Validate验证场景分离写法
- Validate令牌验证
- captcha验证码配置
- 图片以及文件上传
- 资源路由下URL语法拼接模板循环的ID
- view三元运算符
- POST下的PUT请求(安全方法)
- 路由重定向
- 常见问题解决
- config文件
- 模板里使用路由路径
- 原生PHP在thinkphp中拓展
- 公共函数文件
- 5.1与5.0区别
- 5.1路由区别
- 5.1中间件
- 5.1微信支付