我有方法可以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.');
}
答案 0 :(得分:4)
使用Task Scheduler自动运行命令:
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();
}