美文网首页Laravel开发实践Laravel
Laravel 数据删除以及软删除

Laravel 数据删除以及软删除

作者: ONEDAYLOG | 来源:发表于2017-08-18 15:07 被阅读228次

所谓软删除指的是数据表记录并未真的从数据库删除,而是将表记录的标识状态标记为软删除,这样在查询的时候就可以加以过滤,让对应表记录看上去是被”删除“了。Laravel中使用了一个日期字段作为标识状态,这个日期字段可以自定义,这里我们使用deleted_at,如果对应模型被软删除,则deleted_at字段的值为删除时间,否则该值为空。

1、删除模型

//1、第一种方法
Post::find(5)->delete();
//2、第二种方法
Post::destroy(5)
//3、第三种方法
Post::where('views', 0)->delete();

2、软删除

数据库中添加deleted_at字段
Model中使用SoftDeletes,具体可参考源码Illuminate\Database\Eloquent\SoftDeletes

...
use Illuminate\Database\Eloquent\SoftDeletes;
class Post extends Model
{
    use SoftDeletes;
...

按照1中常规的方法删除即可就被软删除了,find,get,all都将无法查找这些些被软删除后的数据

3、软删除查询

需要在普通的查询前调用withTrashed

 Post::withTrashed()->find('1);

 Post::withTrashed()->where('id','>',1)->get();

 Post::withTrashed()->all()

4、软删除恢复

//恢复单个
Post::withTrashed()->find(1)->restore();
//恢复多个模型
Post::withTrashed()->where('id','>',1)->restore();
//恢复所有模型
Post::withTrashed()->restore();

5、强制删除

//删除单个
Post::withTrashed()->find(1)->forceDelete();
//删除多个模型
Post::withTrashed()->where('id','>',1)->forceDelete();
//删除所有模型
Post::withTrashed()->forceDelete();

6、关联模型

数据被软删除后关联的数据还想关联到该数据,需要在belongsTo后面加withTrashed

    public function user()
    {
        return $this->belongsTo(Administrator::class)->withTrashed();
    }
成果图.gif

相关文章

  • Laravel 数据删除以及软删除

    所谓软删除指的是数据表记录并未真的从数据库删除,而是将表记录的标识状态标记为软删除,这样在查询的时候就可以加以过滤...

  • Laravel软删除

    1.首先要做一些设置首先在模型类中要使用SoftDeletestrait,该trait为软删除提供一系列相关方法,...

  • 妥善处理复杂业务系统中的“删除”

    删除的分类 什么是软删除软删除又叫逻辑删除,标记删除,与我们常说的删除不同,并不是真的从数据库中将这条记录去除,而...

  • 数据删改规范

    删除铁律 禁止程序物理删除数据 特别是商业数据,SaaS 产品,都不能通过系统直接物理删除。 软删除 根据删除条件...

  • laravel中使用软删除

    在模型层中(Models)添加三行代码搞定 use Illuminate\Database\Eloquent\So...

  • 软删除

    软删除即不真正删除数据库中的数据,数据是可以恢复的,只是对用户来讲是不可见的。软删除在实际应用中很广泛,除了一般的...

  • Laravel设置软删除及其恢复系列操作

    软删除及其相关实现 在模型类中要使用SoftDeletestrait并设置$date属性数组 数据迁移中软删除字段...

  • Laravel6.X软删除教程

    软删除的意思就是没有真正删除,只是在数据库里标记了一下,便于随时恢复。我们可以软删除用户,让他失去正常的权限,也可...

  • 数据的软删除—什么时候需要?如何去实现?

    阅读完本文你将会学会 什么是软删除? 如何考量是否使用软删除 如何在Spring里实现软删除 1. 前言 我们在开...

  • 2022-05-23开箱即用之“删除”模块测试用例

    3、删除 ①删除一个数据库中存在的数据,然后查看数据库中是否删除(界面删除一条数据,查看数据库中是否删除) ②删除...

网友评论

    本文标题:Laravel 数据删除以及软删除

    本文链接:https://www.haomeiwen.com/subject/askarxtx.html