我有方法可以让soft delete
我的模型、restore
它们和hard delete
(从数据库中擦除)主题,
到目前为止一切正常,除此之外我想要的是在30 days
从soft delete
信息传递后硬删除,这样即使管理员忘记硬删除模型,它也会在 30 天后自动删除。
这是我的代码:
soft delete
public function destroy($id)
{
$user = User::findOrFail($id);
$user->delete();
Mail::to($user->email)->send(new adminsoftdeleteduser($user));
return redirect()->route('users.index')->with('success', 'User successfully deleted.');
}
restore
public function restore($id)
{
$user = User::onlyTrashed()->where('id', $id)->restore();
// Mail::to($user->email)->send(new adminrestoreduser($user));
return redirect()->route('users.index')->with('success', 'User successfully restored.');
}
hard delete
public function forcedelete($id)
{
$user = User::where('id', $id)->forcedelete();
Storage::delete($user->image);
return redirect()->route('users.index')->with('success', 'User Permanently deleted.');
}
hard delete
为了在deleted_at
列数据30 天后删除我的模型,我应该向我的函数添加什么?我已经尝试过调度方式,因为我不能使用 cron 作业来测试它,所以我使用了它php artisan schedule:run
,这是我得到的结果:
使用任务计划程序自动运行命令:
protected function schedule(Schedule $schedule)
{
$schedule->call(function () {
$users = User::whereNotNull('deleted_at')->where(
'deleted_at', '<=', now()->subDays(30)->toDateTimeString()
)->get();
$users->each->forceDelete();
})->daily();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句