> ## 在控制器中調用模型進行更新數據
### 1. 查找并更新(需要知道主鍵,不需要構造鍵名和表字段對應的數組)
```
$user = User::get(1);
$user->name = 'thinkphp';
$user->save();
```
### 2. 推薦:直接更新(根據指定條件更新,需要構造鍵名和表字段對應的數組)
```
$user = new User;
// save方法第二個參數為更新條件
$user->save([
'name' => 'thinkphp',
'email' => 'thinkphp@qq.com'
],['id' => 1]);
```
### 3. 過濾非數據表字段
```
$user = new User();
// 過濾post數組中的非數據表字段數據
$user->allowField(true)->save($_POST,['id' => 1]);
```
### 4. 允許指定字段更新
```
$user = new User();
// post數組中只有name和email字段會寫入
$user->allowField(['name','email'])->save($_POST, ['id' => 1]);
```
### 5. 批量更新數據(僅支持根據主鍵更新)
```
$user = new User;
$list = [
['id'=>1, 'name'=>'thinkphp', 'email'=>'thinkphp@qq.com'],
['id'=>2, 'name'=>'onethink', 'email'=>'onethink@qq.com']
];
$user->saveAll($list);
// 強制更新非插入
$user = new User;
$list = [
['id'=>1, 'name'=>'thinkphp', 'email'=>'thinkphp@qq.com'],
['id'=>2, 'name'=>'onethink', 'email'=>'onethink@qq.com']
];
$user->isUpdate()->saveAll($list);
```
### 6. 通過數據庫類更新數據
```
$user = new User;
$user->where('id', 1)
->update(['name' => 'thinkphp']);
// 如果包含主鍵則無需where
$user->update(['id' => 1, 'name' => 'thinkphp']);
// 如果條件更復雜還可以用閉包
$user->save(['name' => 'thinkphp'],function($query){
// 更新status值為1 并且id大于10的數據
$query->where('status', 1)->where('id', '>', 10);
});
```
### 7. 顯式插入和更新
```
// 顯式指定當前操作為新增操作
$user = User::get(1);
$user->name = 'thinkphp';
$user->isUpdate(false)->save();
// 顯式指定更新數據操作
$user = new User;
$user->isUpdate(true)
->save(['id' => 1, 'name' => 'thinkphp']);
```
- 運行環境需求
- tp5目錄結構
- 命令行生成代碼
- 路由
- 請求
- 獲取請求信息
- 超全局變量獲取
- 更改請求變量的值
- 判斷是否為某種請求類型
- 偽裝表單請求類型
- HTTP頭部信息
- 偽靜態
- 向請求對象中注入自定義的屬性和方法
- 簡單的傳參可以使用參數綁定
- 依賴注入(將對象注入方法作為參數)
- 將請求的數據進行緩存
- 控制器
- 一個控制器代碼示例
- 空控制器
- 資源控制器
- 模型
- 一個模型代碼示例
- 模型的四種調用方法
- 控制器中調用模型添加數據
- 控制器中調用模型更新數據
- 控制器中調用模型刪除數據
- 控制器中調用模型查詢數據
- 模型中使用聚合函數
- 獲取器
- 修改器
- 自動寫入時間戳
- 只讀字段
- 軟刪除
- 自動類型轉換
- 數據自動完成
- 查詢范圍
- 數組方式訪問和轉換為數組
- json序列化
- 模型的事件
- 關聯模型
- 一對一關聯
- 一對多關聯
- 遠程一對多(跨表關聯)
- 多對多關聯
- 多態關聯
- 關聯預載入N+1次查詢變2次
- 延遲預載入
- 關聯統計
- 視圖與模板
- 模板引擎配置
- 分配數據到模板
- 輸出替換
- 模板中輸出變量
- 模板中輸出系統變量(配置常量超全局)
- 模板中輸出請求信息
- 模板中使用php函數
- 輸出到模板中的變量指定默認值
- 模板中進行運算
- 原樣輸出代碼不解析
- 模版中注釋
- 模板布局與繼承
- 文件包含
- 內置標簽
- 循環輸出標簽
- 比較標簽
- 條件判斷標簽
- 引入資源文件(js-css)
- 使用原生php
- 在模板中定義變量和常量
- 助手函數
- 常用功能
- 表單驗證
- 驗證器的定義
- 自定義驗證規則
- 速查表
- 系統默認根命名空間
- 系統路徑常量
- 請求變量
- URL請求和信息方法