Выбор ответа Senior Laravel: контейнер и очереди обновлено

Модели в заданиях очереди

Вопрос

Задание очереди принимает в конструкторе модель Order и использует трейт SerializesModels. Что попадёт в очередь?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Только идентификатор: при выполнении заказ загрузится из базы. SerializesModels заменяет модель на ModelIdentifier (класс, id, соединение, загруженные связи), а при выполнении достаёт свежую версию из базы.

Варианты ответа

  1. Все атрибуты и загруженные связи модели на момент постановки
  2. Объект модели целиком через serialize, включая соединение с базой
  3. Только идентификатор: при выполнении заказ загрузится из базыправильный ответ
  4. Ничего: модели нельзя передавать в задания, будет исключение

Разбор

SerializesModels заменяет модель на ModelIdentifier (класс, id, соединение, загруженные связи), а при выполнении достаёт свежую версию из базы. Это экономит место в очереди и даёт актуальные данные. Следствие: если модель удалили до выполнения, задание упадёт с ModelNotFoundException (можно включить $deleteWhenMissingModels).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.