【问题标题】:laravel eloquent query builder updating custom timestamp field without any logiclaravel 雄辩的查询构建器更新自定义时间戳字段而没有任何逻辑
【发布时间】: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


【解决方案1】:

检查你的数据库表(有这个'expired_date'列),不确定但同一列的属性有问题。 如果您在“expired_date”列中找到类似“on update CURRENT_TIMESTAMP”的属性,请将其删除并检查。

此外,此“on update CURRENT_TIMESTAMP”属性将在对特定记录执行更新操作时将日期更新为当前开启。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 2016-06-27
    • 2019-12-09
    • 2020-02-07
    • 2023-01-18
    • 2018-02-13
    • 2015-02-20
    相关资源
    最近更新 更多