Laravel数据删除以及软删除的操作方法 – 明凯博客

Laravel数据删除以及软删除的操作方法

2018年4月28日 MK Laravel 0 阅读 2512次

所谓软删除就是逻辑删除,当然还有物理删除,逻辑删除指的是数据表记录并未真的从数据库删除,而是将表记录的标识状态标记为软删除,这样在查询的时候就可以加以过滤,让对应表记录看上去是被删除了。

Laravel中使用了一个日期字段作为标识状态,这个日期字段可以自定义,这里我们使用deleted_at,如果对应模型被软删除,则deleted_at字段的值为删除时间,否则该值为空。

1、删除模型

1
2
3
4
5
6

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

2、软删除

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

1
2
3
4
5
6

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

use SoftDeletes;

...

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

3、软删除查询

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

1
2
3
4
5

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

4、软删除恢复

1
2
3
4
5
6

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

5、强制删除

1
2
3
4
5
6

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

6、关联模型

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

1
2
3
4

public function user()
{

return $this->belongsTo('App\\User')->withTrashed();

}


原网址: 访问
创建于: 2019-01-17 15:30:39
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论