laravel eloquent построитель запросов, обновляющий пользовательское поле метки времени без какой-либо логики

У меня есть две колонки в таблице под названием 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 был обновлен с сегодняшней датой?

1

Решение

Проверьте свою таблицу базы данных (Имея это ‘expired_date‘column), не уверен, но проблема с атрибутом для того же столбца.
Если вы нашли атрибут какon update CURRENT_TIMESTAMP‘ за ‘expired_dateзатем удалите его и проверьте.

введите описание изображения здесь

Дальше это вышлоon update CURRENT_TIMESTAMP‘атрибут будет обновлять дату с текущим включением, пока выполняется действие по обновлению для конкретной записи (записей).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]