Я работаю над Laravel блогом, и на данный момент я хочу изменить статус статуса Post на основе определенного условия, используя событие. В моей миграции у меня есть таблица enum post_status со статусами, которые я хочу использовать, и я подключил событие и слушателя, а также настроил dispatchesEvents с использованием retrieved, поэтому я ничего не публикую.
Я хочу изменить сообщения, которые в настоящее время имеют статус «Полное И» старше 90 дней, на «Архивный». Для этого я использую код ниже. Статус фактически обновляется на основе первого условия, но я не уверен, что второе условие учитывается (или оно правильно определено), я догадываюсь, что проблема связана с последней строкой. Это код в слушателе:
public function handle(PostStatusUpdaterEvent $event)
{
$old_date = Carbon::now()->subDays(90);
Post::where(['post_status' => 3]) // 3 = Complete status
->where(['end_date', '<', $old_date])
->update(['post_status' => 4]); // 4 = Archived status
}
И ошибка:
lluminate\Database\QueryException
SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'where clause' (SQL: update
`posts` set `post_status` = 4, `posts`.`updated_at` = 2020-02-24 13:13:15 where
(`post_status` = 3) and (`0` = end_date and `1` = < and `2` = 2019-11-26 13:13:15))
У меня есть поле post_status в моем защищенном массиве с возможностью заполнения, а также защищена сама таблица. Также попытался установить поле post_status в массиве защищенных добавлений, также попытался установить идентификатор таблицы как скрытый, ни один из которых не сработал. Наконец, у меня есть модель и пространство имен Carbon, импортированные в слушатель (как при использовании ...)