Карточка 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 ошибок.