Карточка Middle Eloquent, N+1 и миграции обновлено

Жадная загрузка: варианты

Вопрос

Как загрузить связи в Eloquent заранее?

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

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

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

Коротко

- Post::with(['author', 'comments.user'])-get(): при запросе, вложенные через точку. - $posts-load('author'): дозагрузить к уже полученной коллекции. - loadMissing: только незагруженные связи. - with(['comments' = fn($q) = $q-latest()-limit(3)]): с условиями. - withCount, withSum, withExists: агрегаты подзапросом. -…

Ответ

  • Post::with(['author', 'comments.user'])->get(): при запросе, вложенные через точку.
  • $posts->load('author'): дозагрузить к уже полученной коллекции.
  • loadMissing: только незагруженные связи.
  • with(['comments' => fn($q) => $q->latest()->limit(3)]): с условиями.
  • withCount, withSum, withExists: агрегаты подзапросом.
  • Свойство $with в модели: всегда загружать (осторожно).

Разбор

Model::preventLazyLoading(!app()->isProduction()) превращает N+1 в исключение при разработке.

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

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