在学习软删除的时候遇到了问题,在此记录一下
一. 什么是软删除?
软删除并不是真的从数据库中删除掉了, 而是在表中以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();
如有不对的地方, 还望指出共同学习
|