> ## 查询范围:把基础的查询条件封装成一个整体,在其他查询中可以直接调用这个条件整体进行查询
> 可以理解为把一串的链式操作定义为一个函数,查询的时候直接利用链式进行调用
### 查询范围定义
```
class User extends Model
{
// 定义名为thinkphp的查询范围
protected function scopeThinkphp($query)
{
$query->where('name','thinkphp')->field('id,name');
}
// 定义名为age的查询范围
protected function scopeAge($query)
{
$query->where('age','>',20)->limit(10);
}
}
```
### 查询范围的调用
```
// 查找name为thinkphp的用户(基于thinkphp查询范围)
User::scope('thinkphp')->find();
// 查找年龄大于20的10个用户(基于age查询范围)
User::scope('age')->select();
// 查找name为thinkphp的用户并且年龄大于20的10个用户(基于thinkphp和age查询范围)
User::scope('thinkphp,age')->select();
// 也可以直接使用闭包函数(这种用法没意义)
User::scope(function($query){
$query->where('age','>',20)->limit(10);
})->select();
// 动态调用(注意:查询范围必须在所有链式操作最前面调用,且后面必须为find或者select)
$user = new User;
// 查找name为thinkphp的用户
(基于thinkphp查询范围)
$user->thinkphp()->get();
// 查找年龄大于20的10个用户
(基于age查询范围)
$user->age()->all();
// 查找name为thinkphp的用户并且年龄大于20的10个用户
(基于thinkphp和age查询范围)
$user->thinkphp()->age()->all();
```
### 传入参数的查询范围
```
// 定义方法
class User extends Model
{
protected function scopeAgeAbove($query, $lowest_age)
{
$query->where('age','>',$lowest_age)->limit(10);
}
}
// 调用方法(必须为驼峰调用,不能为age_above)
User::scope('ageAbove', 20)->select();
```
### 全局查询范围(模型中所有查询操作都会自动调用这个查询范围)
**全局查询范围方法在5.0.2版本之前必须定义为static静态方法**
```
class User extends Model
{
// 定义全局的查询范围
protected function base($query)
{
$query->where('status',1);
}
}
// 动态开关全局查询范围
// 关闭全局查询范围
User::useGlobalScope(false)->get(1);
// 开启全局查询范围
User::useGlobalScope(true)->get(2);
```
- 运行环境需求
- tp5目录结构
- 命令行生成代码
- 路由
- 请求
- 获取请求信息
- 超全局变量获取
- 更改请求变量的值
- 判断是否为某种请求类型
- 伪装表单请求类型
- HTTP头部信息
- 伪静态
- 向请求对象中注入自定义的属性和方法
- 简单的传参可以使用参数绑定
- 依赖注入(将对象注入方法作为参数)
- 将请求的数据进行缓存
- 控制器
- 一个控制器代码示例
- 空控制器
- 资源控制器
- 模型
- 一个模型代码示例
- 模型的四种调用方法
- 控制器中调用模型添加数据
- 控制器中调用模型更新数据
- 控制器中调用模型删除数据
- 控制器中调用模型查询数据
- 模型中使用聚合函数
- 获取器
- 修改器
- 自动写入时间戳
- 只读字段
- 软删除
- 自动类型转换
- 数据自动完成
- 查询范围
- 数组方式访问和转换为数组
- json序列化
- 模型的事件
- 关联模型
- 一对一关联
- 一对多关联
- 远程一对多(跨表关联)
- 多对多关联
- 多态关联
- 关联预载入N+1次查询变2次
- 延迟预载入
- 关联统计
- 视图与模板
- 模板引擎配置
- 分配数据到模板
- 输出替换
- 模板中输出变量
- 模板中输出系统变量(配置常量超全局)
- 模板中输出请求信息
- 模板中使用php函数
- 输出到模板中的变量指定默认值
- 模板中进行运算
- 原样输出代码不解析
- 模版中注释
- 模板布局与继承
- 文件包含
- 内置标签
- 循环输出标签
- 比较标签
- 条件判断标签
- 引入资源文件(js-css)
- 使用原生php
- 在模板中定义变量和常量
- 助手函数
- 常用功能
- 表单验证
- 验证器的定义
- 自定义验证规则
- 速查表
- 系统默认根命名空间
- 系统路径常量
- 请求变量
- URL请求和信息方法