如何在MySQL过期后更新列?

时间:2015-12-17 06:48:23

标签: php mysql laravel laravel-5

我正在开发laravel 5 app。我有一张包含以下字段的表格:

表名:应用程序

  • application_status tinyint(1)
  • expiration_date datetime(从今天起20天)

    1. 如何在传递expiration_date后更新表中每行的application_status?
    2. 当expiration_date为NULL时,如何启用没有任何反应(问题是一旦接受应用程序,禁用过期或设置为NULL)

1 个答案:

答案 0 :(得分:1)

使用Laravel查看task scheduling。您可以安排一个功能来为您检查并根据需要进行更改,或创建一个工匠命令并安排 - 您可以选择。

你真的需要先给它一个破解然后如果你遇到麻烦发布你的代码,我们真的为你解答这个问题。但是,有关如何执行此操作的一些示例如下:

安排功能

内部app/Console/Kernel.php

//Rest of file above

protected function schedule(Schedule $schedule)
    {
        $schedule->call(function () {
            $applications = ModelName::where('expiration_date', '<=', \Carbon\Carbon::now())->get();

            foreach($applications as $application)
            {
                //Update each application as you want to
                $application->application_status = 'example';
                $application->save();
            }
        })->daily();
    }

//Rest of file below

创建命令并安排

这个过程非常相似,而不是逐字拼写,你可以按照blog post进行拼写。

在调度程序中有步骤后,只需设置调度程序以使用cron作业运行; * * * * * php /path-to-your-application-artisan schedule:run >> /dev/null 2>&1

当然,你可以adjust the frequency运行该函数。

由于您正在查看日期小于或等于现在的记录,因此会忽略那些NULLexpiration_date的记录。