软删除就是逻辑删除,数据保留单标记上删除状态,一般我们会用删除时间来作为标记,这样标记状态有了,删除时间也有了。
用Laravel 自带的 Eloquent ORM 来实现软删除。
- 首先在数据迁移文件中添加
删除时间
字段
./database/migrations/2014_10_12_000000_create_users_table.php
1 |
|
执行
php artisan migrate
运行迁移文件修改对应的数据模型
./app/Models/User.php
1 |
|
- 软删除方法
直接调用delete()
方法或者destroy()
方法即可
1 | User::destroy($id); |
这时候查询的数据自动添加过滤条件
deleted_at = NULL
- 恢复删除
1 | User::onlyTrashed()->where('id', $id)->restore(); |
- 永久删除
直接删除数据
1 | User::forceDeleted($id); |
查询包含已删除的数据
使用 withTrashed()
可以查询出包含已删除的数据
1 | User::withTrashed()->get(); |
只查询已删除的数据
使用 onlyTrashed()
可以只查询出已删除的数据
1 | User::onlyTrashed()->get(); |