Я использую очередь Laravel для получения данных из API, когда меня уведомляют об изменениях через Webhooks. Webhook возвращает только id измененного объекта, поэтому мне нужно сделать запрос к API, чтобы получить остальные.
Я отправляю задание на получение объекта по идентификатору, оно работает в фоновом режиме (драйвер Redis, супервизор). В очереди я использую:
Model::firstOrNew(['remote_id' => $id]);
но на ->save()
я получаю:
SQLSTATE[23000]: нарушение ограничения целостности: 1062 Дублирующаяся запись «tag-12» для ключа «categories_type_remote_id_unique» (SQL: вставить в
categories
...
Если я отлаживаю этот код с помощью драйвера sync
, я не могу воспроизвести эту ошибку, она появляется только в фоновых заданиях. Например, задание не может получить самые последние данные из БД и использует new
часть firstOrNew
вместо first
.