如何使用Laravel的“查询”构建器还原软删除的记录?

Pra*_*nth 4 laravel laravel-5

我一直在为我的项目使用查询生成器,并想使用查询生成器恢复软删除的记录。

Zer*_*One 5

在这里查看https://laravel.com/docs/5.6/eloquent#soft-deleting

恢复软删除的模型有时您可能希望“取消删除”软删除的模型。要将软删除的模型还原为活动状态,请在模型实例上使用restore方法:

$flight->restore();
Run Code Online (Sandbox Code Playgroud)

要么

Model::query()->restore();
Run Code Online (Sandbox Code Playgroud)

如果您想手动进行操作。

Model::whereNotNull('deleted_at')->update([
    'deleted_at' => null
]);
Run Code Online (Sandbox Code Playgroud)


cha*_*fdo 5

软删除的作用是为deleted_at列设置一个值,然后deleted_at使用全局范围过滤列具有值的记录。

因此,要恢复软删除的记录,您只需将该deleted_at列设置为空。

正如您想使用查询构建器那样做

DB::table('table')
  ->where('id', $recordToRestoreId)
  ->update(['deleted_at' => null]);
Run Code Online (Sandbox Code Playgroud)

如果使用 Eloquent

Model::withTrashed()
     ->where('id', $recordToRestoreId)
     ->restore();
Run Code Online (Sandbox Code Playgroud)

或者如果你有一个模型实例

$model->restore();
Run Code Online (Sandbox Code Playgroud)