### 数据库操作返回值总结
* 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();
~~~
返回值:
* 成功:返回`数据集对象`
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210103145124961.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p5MTI4MTUzOTYyNg==,size_16,color_FFFFFF,t_70)
* 失败:返回`空数据集对象`
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210103145145753.png)
如果需要转换为数组可以使用`toArray()`方法:
~~~php
Db::name('user')->where('status', 1)->select()->toArray();
~~~
返回结果为数组:
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021010314530990.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p5MTI4MTUzOTYyNg==,size_16,color_FFFFFF,t_70)
# 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,各层写的内容