Laravel 自动硬删除

马福蒂斯

我有方法可以让soft delete我的模型、restore它们和hard delete(从数据库中擦除)主题,

到目前为止一切正常,除此之外我想要的是在30 dayssoft 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.');
    }

问题

  1. hard delete为了在deleted_at列数据30 天后删除我的模型,我应该向我的函数添加什么

更新

我已经尝试过调度方式,因为我不能使用 cron 作业来测试它,所以我使用了它php artisan schedule:run,这是我得到的结果:

屏幕1

数字漂流者

使用任务计划程序自动运行命令:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章