2016-12-15 11 views
1

У меня есть две колонки в таблице под названием expired(boolean) и expire_date(timestamp). Я запускаю планировщик для проверки того, истек ли срок действия купона или нет в everyMinute() при обновлении значений столбца expired с использованием foreach, я обнаружил, что его изменение значения столбца expired_date с текущей датой. Я нашел это странным или может быть я баловаться с пропуском ссылочной вещь .. вот кодlaravel eloquent query builder обновление пользовательского временного поля без какой-либо логики

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

вот результат,

DB перед обновлением

enter image description here

DB после запуска команды php artisan schedule:run

enter image description here

Может ли кто-нибудь сказать мне, почему expired_date был обновлен с сегодняшней датой?

+0

Использовать 'Carbon :: now()', а не 'Carbon :: today()', второй возвращает дату, а не фактическое время – Vuldo

ответ

1

Проверьте таблицу базы данных (наличие этого столбца «expired_date»), не уверены, но выдают атрибут для одного столбца. Если вы обнаружили такой атрибут, как 'on update CURRENT_TIMESTAMP' для 'expired_date', то удалите его и проверьте.

enter image description here

Далее этот «on update CURRENT_TIMESTAMP» атрибут будет обновлять дату с током на то время действия обновления для выполнения конкретной записи (ей).