Laravel如何在创建7天后删除数据库记录

Ruk*_*ing 0 php mysql sql laravel eloquent

如何自动删除7天后创建的数据库记录?我是否必须放置在index.blade.php 或其他内容中?也许有一些调度程序?

public function index()
{
    $results = Test::orderBy('created_at', 'desc')->take(5)->get();
    if (!Auth::user()->isAdmin()) {
        $results = $results->where('user_id', '=', Auth::id());
    }
    return view('results.index', compact('results'));
}
Run Code Online (Sandbox Code Playgroud)

Nim*_*mal 5

您可以使用 Laravel 任务调度来执行此操作。

https://laravel.com/docs/5.6/scheduling

安排每周运行一次的任务来删除帖子。

schedule任务在类的方法 内定义App\Console\Kernel

在那里你可以定义一个闭包:

protected function schedule(Schedule $schedule)
    {
        $schedule->call(function () {
            Test::where('updated_at', '<', Carbon::now()->subDays(7))->delete();
        })->weekly();
    }
Run Code Online (Sandbox Code Playgroud)

然后,您必须添加一个每隔几分钟(或您希望的任何时间范围)运行一次的 cron 作业来运行这些命令。

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
Run Code Online (Sandbox Code Playgroud)

这将检查到期任务并相应地运行它们。

希望能帮助到你。如果您有任何疑问,请随时询问。