当当前日期超过表中的特定日期时,Laravel会自动更新表中的字段

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (45)

当当前日期超过表中的另一个特定字段时,我正在尝试更新数据库表中的特定字段。

我的表“任务”:

id |..... | startDate  | endDate   | status
---|------|------------|-----------|--------
1  |..... | 2019/03/13 | 2019/03/14| Process

因此,如果当前日期时间> endDate,则无需任何点击即可实时自动将状态更新为“已过期”。

我确实在Kernel.php中创建了一个调度程序,但什么也没发生。我的日程安排:

 $schedule->call(function () {
            DB::table('tasks')->whereDate('endDate', '<', date('Y/m/d H:i'))->update(['status', 'Expired']);
        })->everyMinute();

我的结束日期值和格式:

2019/03/12 17:00

PS - 我没有使用Carbon

提问于
用户回答回答于

我建议使用调度程序,并运行使用DB的简单命令。您可以每隔几分钟运行该任务,它将完成工作。

DB::table('task')->whereDate('endDate', '<', now())->update(['status' => 'expired']);

如果您不想使用Carbon,只需更改now()date('Y-m-d H:i:s')

请记住添加单个cron条目以启动调度程序。

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

扫码关注云+社区

领取腾讯云代金券