### 數據庫操作返回值總結
* 0\. 前言
* 1\. Db類操作數據庫
* * 1.1 新增
* 1.2 更新
* 1.3 刪除
* * 1.3.1 單條刪除
* 1.3.2 批量刪除
* 1.4 查詢
* * 1.4.1 單筆記錄
* 1.4.2 多筆記錄
* 2\. Model模型類操作數據庫
* * 2.1 新增
* 2.2 更新
* * 2.2.1 單筆更新
* 2.2.2 批量更新
* 2.3 刪除
* * 2.3.1 刪除模型
* 2.3.2 根據主鍵刪除
* 2.3.3 條件刪除
* 2.4 查詢
* * 2.4.1 單筆記錄
* 2.4.2 多筆記錄
# 0\. 前言
# 1\. Db類操作數據庫
## 1.1 新增
~~~php
$data = ['username' => 'bar', 'password' => 'foo'];
$res = Db::name('user')->insert($data);
~~~
返回值:
* 成功:返回`1`
* 失敗:拋出`異常`
## 1.2 更新
~~~php
// 方式1:save方法包含主鍵
$res = Db::name('user')->save(['id' => 7, 'username' => 'thinkphp1']);
// 方式2:update方法where條件更新
$res = Db::name('user')->where('id', 7)->update(['username' => 'thinkphp']);
// 方式3:update方法包含主鍵
$res = Db::name('user')->update(['username' => 'thinkphp','id' => 1]);
~~~
返回值:
* 成功:返回`1`
* 失敗:若沒有發生更新則返回`0`;若更新字段數據表不存在拋出`異常`
## 1.3 刪除
### 1.3.1 單條刪除
~~~php
// 根據主鍵刪除
$res = Db::name('user')->delete(7);
// 條件刪除
$res = Db::name('user')->where('id',7)->delete();
~~~
返回值:
* 成功:返回`1`
* 失敗:返回`0`(包括id不存在)
### 1.3.2 批量刪除
~~~php
// 根據主鍵刪除
$res = Db::name('user')->delete([11,12]);
// 條件刪除
$res = Db::name('user')->where('id','>',10)->delete();
~~~
返回值:
* 成功:返回刪除記錄的條數
* 失敗:返回`0`(包括id不存在)
## 1.4 查詢
### 1.4.1 單筆記錄
~~~php
$res = Db::name('user')->where('id', 16)->find();
~~~
返回值:
* 成功:返回`結果數組`
* 失敗:返回`null`
### 1.4.2 多筆記錄
~~~php
$res = Db::name('user')->where('status', 1)->select();
~~~
返回值:
* 成功:返回`數據集對象`

* 失敗:返回`空數據集對象`

如果需要轉換為數組可以使用`toArray()`方法:
~~~php
Db::name('user')->where('status', 1)->select()->toArray();
~~~
返回結果為數組:

# 2\. Model模型類操作數據庫
## 2.1 新增
~~~php
$user = new UserModel;
$user->username = "aaa";
$user->password = "aaa";
$res = $user->save();
dump($res);
// 也可直接把數據寫在save方法里面:
$user->save(['username' => 'thinkphp','password' => '123456'
]);
~~~
返回值:
> `save`方法成功會返回`true`,并且只有當`before_insert`事件返回`false`的時候返回`false`,一旦有錯誤就會`拋出異常`。所以無需判斷返回類型。
## 2.2 更新
### 2.2.1 單筆更新
~~~php
$user = UserModel::find(16);
$user->username = 'qwer';
$res = $user->save();
dump($res);
~~~
> `save`方法成功返回`true`,并只有當`before_update`事件返回`false`的時候返回`false`,有錯誤則會`拋出異常`。
### 2.2.2 批量更新
~~~php
$user = new UserModel;
$list = [['id'=>16, 'username'=>'thinkphp'],['id'=>17, 'username'=>'onethink']
];
$res = $user->saveAll($list);
dump($res);
~~~
> 返回的是一個`數據集對象`
## 2.3 刪除
### 2.3.1 刪除模型
~~~php
$user = UserModel::find(16);
$res = $user->delete();
dump($res);
~~~
> 刪除成功返回`true`,失敗可能拋出異常
### 2.3.2 根據主鍵刪除
~~~php
User::destroy(1);
// 支持批量刪除多個數據
User::destroy([1,2,3]);
~~~
> 主鍵不存在也返回`true`
### 2.3.3 條件刪除
~~~php
User::where('id','>',10)->delete();
~~~
> 返回刪除的`記錄數`
## 2.4 查詢
### 2.4.1 單筆記錄
~~~php
$user = UserModel::find(18);
// where查詢
$user = UserModel::where('username', 'aaaa789')->find();
~~~
> 返回`模型數據`,數據在data參數中;若查詢失敗返回`null`
### 2.4.2 多筆記錄
~~~php
$users = UserModel::select([18,19]);
// where查詢
$users = UserModel::where('status', 1)->select();
~~~
> 返回`模型集合`;若數據不存在返回`空模型集合`
* * *
- 空白目錄
- 使用thinkphp6搭建后端api接口流程
- tp6 uniapp vue 前后端跨域解決方案
- 操作記錄
- api00
- 你看看有沒有用
- 6666
- Docker安裝LNMP環境的詳細過程(可部署TP項目)
- LNMP部署thinkphp
- 玩客云Armbian 安裝LNMP環境 Docker
- ThinkPHP6項目基操(16.實戰部分 redis+token登錄)
- ThinkPHP6項目基操(11.實戰部分 部署后臺靜態頁面模板及后臺登錄頁面)
- ThinkPHP6項目基操(13.實戰部分 項目中的自定義異常處理總結 錯誤頁面API錯誤)
- ThinkPHP6項目基操(14.實戰部分 中間件處理登錄流程)
- ThinkPHP6項目基操(12.實戰部分 驗證碼)
- ThinkPHP6項目基操(18.實戰部分 表單令牌Token 防CSRF)
- ThinkPHP6項目基操(19.實戰部分 Mysql模型事務操作)
- ThinkPHP6項目基操(20.實戰部分 數據庫操作返回值總結)
- 瀏覽器端判斷當前設備的運行環境
- api
- api異常捕捉
- 寫一個中間件
- 統一的參數返回形式
- ThinkPHP6調用模型的方法
- thinkphp6控制器、驗證器、模型、service,各層寫的內容