# 查询构造器
[TOC]
#### 从数据表中取得所有的数据列
```
Db::table('user')->get();
```
#### 取得指定的字段
```
Db::table('user')->get(['username','age']);
```
#### 从数据表中取得单一数据列
```
Db::table('user')->where('username','向军')->first();
//取出指定主键的值
Db::table('user')->first(2);
```
#### 从数据表中取得单一数据列的单一字段
```
Db::table('user')->where('username', '向军')->pluck('username');
//返回第一条记录的 username 字段值
```
#### 取得单一字段值的列表
```
Db::table('user')->lists('username');
//满足条件记录的所有username字段
[
[0] => admin
[1] => hdxj
]
```
#### 返回一维数组,第一个字段做为键名使用,第 2 个字段做为键值
```
Db::table('user')->lists('id,username');
//id 字段做为键名使用
[
[1] => admin
[2] => hdxj
]
```
#### 多个字段返回二维数组,第一个字段值做为键名使用,其余字段做为键值
```
Db::table('user')->lists('id,username,age');
//返回值如下
[
[1] => [
[id] => 1
[username] => admin
[age] => 22
]
[2] => [
[id] => 2
[username] => hdxj
[age] => 67
]
]
```
#### like模糊查询
第三个参数为null时,查询忽略
```
Db::table( 'rule' )->where( 'name','like', "%后盾人%" )->get()
```
#### 指定查询结果字段
```
Db::table('user')->field('username AS name,age')->get();
或
Db::table('user')->field(['username','age'])->get();
```
#### 根据某个字段查询
```
Db::table('user')->getByName("hdphp");
//返回一条记录
```
#### 增加查询子句到现有的查询中
```
$db = Db::table('user')->field('username AS name','age','id');
$db->where('id','>',2)->get();
```
#### 使用 where 及运算符
第二个参数为null时,查询忽略
```
Db::table('user')->where('id','>',1)->get();
Db::table('user')->where('id','>',1)->where('id','<',10)->get();
```
#### where以数组形式传参
```
$where=[
['id','>',3],
['status',0]
];
Db::table('user')->where($where)->get();
```
#### whereNotEmpty内容为空时不设置
当查询参数为空时忽略本次条件设置,以下代码的where条件不会添加到SQL中。
```
Db::table('user')->whereNotEmpty('username','')->get();
```
#### 使用andwhere
```
Db::table('user')->where('id','>',1)->andwhere('id','<',10)->get();
```
#### 使用orwhere
```
Db::table('user')->where('id','>',1)->orwhere('id','<',10)->get();
```
#### 使用 logic 条件连接符
```
Db::table('user')->where('id','>',1)->logic('or')->where('id','<',22)->get();
```
#### 预准备whereRaw
```
Db::table('user')->whereRaw('age > ? and username =?', [1,'admin'])->get();
```
#### 使用 whereBetween
```
Db::table('user')->whereBetween('id',[10,30])->get();
```
#### 使用 WhereNotBetween
```
Db::table('user')->whereNotBetween('id',[10,30])->get();
```
#### 使用 WhereIn
```
Db::table('user')->whereIn('id',[2,3,9])->get();
```
#### 使用 WhereNotIn
```
Db::table('user')->whereNotIn('id',[3,5,6])->get();
```
#### 使用 WhereNull
```
Db::table('user')->whereNull('username')->get();
```
#### 使用 WhereNotNull
```
Db::table('user')->whereNotNull('id')->get();
```
#### 指定条件关系
```
Db::table('user')->where('id','>',1)->logic('AND')->whereBetween('id',[1,10])->get();
```
#### 排序(Order By)
```
Db::table('user')->orderBy('id','DESC')->get();
Db::table('user')->orderBy('id','DESC')->orderBy('rank','ASC')->get();
//多个排序条件
```
#### 分组GROUP BY
```
Db::table('user')->groupBy('age')->get();
```
#### 分组筛选HAVING
```
Db::table('user')->groupBy('age')->having('count(sex)','>',2)->get();
```
#### 取部分数据LIMIT
```
Db::table('user')->limit(2)->get();
Db::table('user')->limit(2,5)->get();
```
## 聚合
#### max
~~~
Db::table("user")->max('id');
~~~
#### min
~~~
Db::table("user")->min('id');
~~~
#### avg
~~~
Db::table("user")->avg('id');
~~~
#### sum
~~~
Db::table("user")->sum('id');
~~~
## JOIN多表关联
#### 多表关联INNER JOIN
```
Db::table('user')
->join('class','user.cid','=','class.cid')
->join('contacts','user.id','=','contacts.uid')
->get()
```
#### 多表关联LEFT JOIN
```
Db::table('user')->leftJoin('class','user.cid','=','class.cid')->get();
```
#### 多表关联RIGHT JOIN
```
Db::table('user')->rightJoin('class','user.cid','=','class.cid')->get();
```
- 文档已经迁移到后盾人
- 介绍
- 框架特性
- 开发规范
- 许可协议
- 作者向军
- 安装框架
- 更新框架
- 基础
- 入口文件
- 应用配置
- 优雅链接
- 目录结构
- 系统常量
- 自动加载
- 应用密钥
- 系统函数
- CSRF保护
- 依赖注入
- 跨域访问
- 配置
- 配置文件
- 基本功能
- 扩展配置
- c 函数
- 控制器
- 定义声明
- 基本使用
- 相关函数
- 响应消息
- 路由
- 基础知识
- 基础路由
- 路由参数
- 参数检测
- 依赖注入
- 控制器
- 分组路由
- RESTful
- 别名路由
- 数据
- 配置相关
- 核心操作
- 查询构造器
- 日志记录
- 分页处理
- 事务处理
- 函数相关
- 数据库
- 数据迁移
- 数据填充
- 模型
- 定义模型
- 模型动作
- 模型验证
- 自动完成
- 自动过滤
- 字段保护
- 数据填充
- 多表关联
- 分页处理
- 仓库
- 数据仓库
- 查询规则
- 视图
- 基础知识
- 模板配置
- 模板文件
- 分配数据
- 系统标签
- 扩展标签
- 缓存模板
- 模板继承
- 视图函数
- widget
- vue组件
- 中间件
- 中间件
- 缓存
- 基本操作
- 文件缓存
- 数据表缓存
- 服务
- 服务容器
- 定制服务
- 相关函数
- 请求
- 基本使用
- 请求扩展
- 测试
- 基础知识
- 基本使用
- HTTP测试
- 调试
- 调试模式
- 日志管理
- 组件
- 多语言
- 响应处理
- Cookie
- Session
- 验证码
- XML
- 自动验证
- 文件处理
- 压缩解压
- RBAC
- 数组增强
- 分页管理
- 图像处理
- 生成静态
- 加密解密
- 字符串
- 数据集合
- 工具服务
- 目录操作
- 邮件发送
- CURL
- QQ登录
- 数据备份
- 购物车
- 日志处理
- 命令组件
- 二维码
- 后盾云
- 日期处理
- 阿里
- 支付宝
- 阿里云直播
- 阿里云短信
- 阿里云邮件
- 阿里云OSS
- SOCKET
- 启动与关闭
- 前端
- 微信