laravel eloquent query builder更新自定义时间戳字段,没有任何逻辑

时间:2016-12-15 08:10:24

标签: php mysql laravel laravel-scheduler laravel-eloquent

我在一个名为expired(boolean)expire_date(timestamp)的表格中有两列。在使用foreach更新everyMinute()列值时,我正在expired运行调度程序以检查优惠券是否已过期,我发现它使用今天的日期更改expired_date列值。我发现这很奇怪,或者可能是我搞砸了引用的东西..这里是代码

$schedule->call(function () {
            CoursePromotion::where('expired',0)
                ->whereDate('expire_date','<',Carbon::today())
                ->update(['expired' => 1]);
      })->everyMinute();

这是结果,

更新前的数据库

enter image description here

运行php artisan schedule:run命令后

DB

enter image description here

有谁能告诉我为什么expired_date已经用今天的日期更新了?

1 个答案:

答案 0 :(得分:1)

检查您的数据库表(包含此&#39; expired_date&#39;列),不确定但是同一列的属性问题。 如果您找到类似&#39; on update CURRENT_TIMESTAMP&#39;的属性为&#39; expired_date&#39;列然后将其删除并检查。

enter image description here

此外&#39; on update CURRENT_TIMESTAMP&#39;属性将更新日期与当前打开,而更新操作执行特定记录。