Laravel学习之-软删除

在学习软删除的时候遇到了问题,在此记录一下

一. 什么是软删除?

软删除并不是真的从数据库中删除掉了, 而是在表中以deleted_at(这个字段的名称也是固定的)这个字段值标识的, 需要在设计表的时候呢添加这个字段 deleted_at, 默认值为null, 

类型为 timestamp('deleted_at')

在模型中添加 use SoftDeletes

use Illuminate\Database\Eloquent\SoftDeletes;

class TestModel extends Model 
{
    use SoftDeletes;

    
    protected $dates = ['deleted_at'];
} 

在控制器中使用

$result = TestModel::destory(1);
dd($result)

而当我们开启了软删除的功能后,此时通过正常的数据获取列表,会自动隐藏, 自己可以尝试下

$result = TestModel::get();
dd($result);

$result = TestModel::find(1);
dd($result);

二. 找回软删除的数据

如果需要查询包含软删除的数据,通过 withTrashed() 方法实现
$result = TestModel::withTrashed()->get()

获取某个软删除的数据(不是软删除的数据也可以被搜索)

$result = TestModel::withTrashed()->find(1);

如果只是想搜索被软删除的数据, 可以使用onlyTrashed()

$result = TestModel::onlyTrashed()->get()

获取某个软删除的数据(只有软删除的数据才可以被搜索)

$result = TestModel::onlyTrashed()->find(1);
如果想将软删除的数据恢复正常 ( 类似从回收站还原 ) ,使用 restore() 方法;
$result= TestModel::onlyTrashed()->find(1); 
$result->restore();
如果开启了软删除,还需要强行真实的永久删除,可以使用 forceDelete() 方法;
//开启软删除时的真实永久删除 
$result= TestModel::onlyTrashed()->find(1); 
$result->forceDelete();

如有不对的地方, 还望指出共同学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值