## 查询构造器
现在主流框架的数据库都包含链式操作方法,不过高手其实还是比较喜欢手写sql的,并不依赖查询类,所以要养成尽量手写sql的习惯。
一般情况下只要最终没有获取到数据,一般函数的返回值都是`$this`
[TOC]
### where条件相关
#### where条件
where条件最多可以接受4个参数
如果参数是一个,表示是一个完整的条件语句,不会进行预处理
例如:
~~~
Db::table('news')->where('id=1');
~~~
如果第一个参数一个数组则会循环调用where
例如:
多个where条件
~~~
Db::table('news')->where([['id', 1], ['look_time', 2]]);
~~~
如果参数是二个,第一个表示字段,第二个表示参数,会进行预处理
~~~
Db::table('news')->where('id', 1);
~~~
如果参数是三个,第一个表示字段,第二个表示逻辑`= > <`,第三个表示参数,会进行预处理
~~~
Db::table('news')->where('id', '=', 1);
~~~
如果参数是四个,第一个表示字段,第二个表示逻辑`= > <`,第三个表示参数,第四个表示逻辑`or and`多个where条件的逻辑
~~~
Db::table('news')->where('id', '=', 1, 'and');
~~~
#### whereIn
~~~
/**
* where In in (1,2,3)
* @param [type] $field [字段]
* @param array $params [参数]
* @param string $logic [与其它条件的逻辑 AND|OR]
* @return [type] [description]
*/
public function whereIn($field, array $params, $logic = 'AND')
Db::table('news')->whereIn('id',[1,2,3,4]);
~~~
#### whereNotIn
~~~
/**
* where Not In
* @param [type] $field [字段]
* @param [type] $params [参数]
* @param string $logic [与其它条件的逻辑]
* @return [type] [description]
*/
public function whereNotIn($field, array $params, $logic = 'AND')
Db::table('news')->whereNotIn('id',[1,2,3,4]);
~~~
#### whereBetween
~~~
/**
* where id between
* @param [type] $field [字段]
* @param array $params [参数]
* @param string $logic [与其它条件的逻辑]
* @return [type] [description]
*/
public function whereBetween($field, array $params, $logic = 'AND')
Db::table('news')->whereBetween('look_time', [10, 20]);
~~~
#### whereNotBetween
~~~
/**
* where NotBetween
* @param [type] $field [字段]
* @param array $params [参数]
* @param string $logic [与其它条件的逻辑]
* @return [type] [description]
*/
public function whereNotBetween($field, array $params, $logic = 'AND')
Db::table('news')->whereNotBetween('look_time', [10, 20]);
~~~
#### whereNull
~~~
/**
* where null
* @param [type] $field [字段]
* @param string $logic [与其它条件的逻辑]
* @return [type] [description]
*/
public function whereNull($field, $logic = 'AND')
Db::table('news')->whereNull('description');
~~~
#### whereNotNull
~~~
/**
* where not null
* @param [type] $field [字段]
* @param string $logic [与其它条件的逻辑]
* @return [type] [description]
*/
public function whereNotNull($field, $logic = 'AND')
Db::table('news')->whereNotNull('description');
~~~
### 分组group
~~~
/**
* 分组
* @param [type] $field [按照那个字段进行分组]
* @return [type] [description]
*/
public function group($field)
Db::table('news')->group('look_time');
~~~
### 排序
~~~
/**
* 排序
* @param [type] $field [排序字段]
* @param [type] $type [排序方式 asc desc]
* @return [type] [description]
*/
public function order($field, $type)
Db::table('user')->whereIn('gid',[1,2,3,4,5])->order('login_time', 'asc');
~~~
### having查询后筛选
~~~
/**
* 过滤
* @param [type] $field [字段]
* @param array $params [参数]
* @return [type] [description]
*/
public function having($field, array $params = [])
Db::table('user')->whereIn('gid',[1,2,3,4,5])->group('login_time')->having('login_time>?', [3]);
~~~
### limit获取条数
~~~
/**
* 获取条数 limit
* @param [type] $limit [位置]
* @return [type] [获取条数]
*/
public function limit($start, $number = '')
Db::table('user')->whereIn('gid',[1,2,3,4,5])->group('login_time')->having('login_time>?', [3])->limit(2,5);
~~~
### 强制使用索引
~~~
/**
* 强制使用索引
* @param [type] $index [索引名称]
* @return [type] [description]
*/
public function force($index)
~~~
### 事务锁
~~~
/**
* 事务锁
* @return [type] [description]
*/
public function lock()
Db::table('news')->lock()
~~~
### union查询
~~~
/**
* [union 查询]
* @param [type] $sql [sql语句]
* @param boolean $all [是否返回所以结果]
* @return [type] [description]
*/
public function union($sql, $all = false)
~~~
### 大数据分批处理
~~~
/**
* 查询分批
* @param [type] $limit [每次处理个数]
* @param [type] $func [处理方法闭包或者函数]
* @return [type] [description]
*/
public function chunk($limit = 100, $func)
~~~
### 游标处理
~~~
/**
* 游标 yield 生成器查询
* @return [type] [description]
*/
public function cursor()
可以进行循环
~~~
### 获得所有查询sql
~~~
Db::getQuerySql();
~~~
### 表别名
~~~
Db::table('news')->alias('n');
~~~
### 设置获取字段
~~~
/**
* 获取字段
* @param [type] $field [字段]
* @return [type] [description]
*/
public function field($field)
Db::table('news')->alias('n')->field('nid,title,description')->where('look_time>3)->select();
~~~
### distinct
~~~
public function distinct($s = true)
~~~
### 设置数据
~~~
/**
* 设置数据
* @param array $data [description]
* @return [type] [description]
*/
public function data(array $data)
~~~
- 简介
- 开发规范
- 许可协议
- 作者
- 安装框架
- 更新日志
- 基础
- 入口文件
- 全局变量
- 系统配置
- 目录结构
- 系统常量
- 自动加载
- 系统函数
- 应用密匙
- 依赖注入
- 配置
- 说明
- 基本使用
- 扩展应用
- C函数
- 容器
- 介绍
- 使用容器
- 绑定服务
- 数组访问
- 请求
- 基础
- 函数常量
- 获取信息
- 方法伪造
- 路由
- 基础使用
- 域名路由
- 静态路由
- 正则路由
- 路由分组
- 地区
- 资源路由
- 闭包
- 其它方法
- 响应
- 响应输出
- session
- 设置
- 生命周期数据
- cookie
- 加密使用
- 中间件(钩子)
- 基础使用
- 保存到文件
- 数据
- 配置
- 核心操作
- 聚合查询
- 查询构造器
- 关系型数据库关联
- 事务处理
- 日志
- 日志
- 视图
- 模板配置
- 模板文件
- 模板语言
- 基础使用
- 内置标签
- 扩展标签库
- 模板
- 变量输出
- 原样输出
- 运算符
- 缓存
- 缓存配置
- 基本操作
- 多语言
- 基础使用
- 扩展库
- 数据验证
- xml
- 压缩
- 工具类
- 字符串
- 文件上传
- 目录操作
- 二维码
- 验证码
- 图片处理
- curl
- url生成