У меня есть две колонки в таблице под названием expired(boolean)
а также expire_date(timestamp)
, Я запускаю планировщик, чтобы проверить, истек ли срок действия купона everyMinute()
при обновлении expired
значения столбца с помощью foreach, я обнаружил, что это изменение значения столбца expired_date с сегодняшней датой. Я нахожу это странным или, может быть, я испорчен с вещью передачи по ссылке … вот код
$schedule->call(function () {
CoursePromotion::where('expired',0)
->whereDate('expire_date','<',Carbon::today())
->update(['expired' => 1]);
})->everyMinute();
вот результат,
БД перед обновлением
БД после запуска php artisan schedule:run
команда
Может кто-нибудь сказать мне, почему expired_date был обновлен с сегодняшней датой?
Проверьте свою таблицу базы данных (Имея это ‘expired_date
‘column), не уверен, но проблема с атрибутом для того же столбца.
Если вы нашли атрибут какon update CURRENT_TIMESTAMP
‘ за ‘expired_date
затем удалите его и проверьте.
Дальше это вышлоon update CURRENT_TIMESTAMP
‘атрибут будет обновлять дату с текущим включением, пока выполняется действие по обновлению для конкретной записи (записей).
Других решений пока нет …