Выбор ответа Senior Laravel: контейнер и очереди обновлено
Модели в заданиях очереди
Вопрос
Задание очереди принимает в конструкторе модель Order и использует трейт SerializesModels. Что попадёт в очередь?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Только идентификатор: при выполнении заказ загрузится из базы. SerializesModels заменяет модель на ModelIdentifier (класс, id, соединение, загруженные связи), а при выполнении достаёт свежую версию из базы.
Варианты ответа
- Все атрибуты и загруженные связи модели на момент постановки
- Объект модели целиком через
serialize, включая соединение с базой - Только идентификатор: при выполнении заказ загрузится из базыправильный ответ
- Ничего: модели нельзя передавать в задания, будет исключение
Разбор
SerializesModels заменяет модель на ModelIdentifier (класс, id, соединение, загруженные связи), а при выполнении достаёт свежую версию из базы. Это экономит место в очереди и даёт актуальные данные. Следствие: если модель удалили до выполнения, задание упадёт с ModelNotFoundException (можно включить $deleteWhenMissingModels).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.