【发布时间】:2017-04-30 18:26:27
【问题描述】:
我在名为expired(boolean) 和expire_date(timestamp) 的表中有两列。我正在运行一个调度程序来检查优惠券是否在everyMinute() 中过期,同时使用foreach 更新expired 列值,我发现它用今天的日期更改了 expired_date 列值。我发现这很奇怪,或者可能是我搞砸了通过引用传递的东西.. 这是代码
$schedule->call(function () {
CoursePromotion::where('expired',0)
->whereDate('expire_date','<',Carbon::today())
->update(['expired' => 1]);
})->everyMinute();
结果如下,
更新前的数据库
运行php artisan schedule:run 命令后的数据库
谁能告诉我为什么 expired_date 已经更新为今天的日期?
【问题讨论】:
-
使用
Carbon::now(),而不是Carbon::today(),第二个只是返回日期而不是实际时间
标签: php mysql laravel laravel-scheduler laravel-eloquent