> ## 查詢范圍:把基礎的查詢條件封裝成一個整體,在其他查詢中可以直接調用這個條件整體進行查詢
> 可以理解為把一串的鏈式操作定義為一個函數,查詢的時候直接利用鏈式進行調用
### 查詢范圍定義
```
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請求和信息方法