Выбор ответа Junior Eloquent, N+1 и миграции обновлено

Локальные скоупы

Вопрос

Как в Eloquent переиспользовать условие «только активные пользователи»?

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

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

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

Коротко

Правильный ответ: Метод scopeActive($query) и вызов User::active()-get() везде. Локальный скоуп оформляет часть запроса как метод модели: public function scopeActive(Builder $q) { $q-where("active", true); }, вызов без префикса scope.

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

  1. Скопировать where("active", true) во все места запросов
  2. Создать представление в базе и отдельную модель поверх него
  3. Переопределить метод all() в модели, добавив условие
  4. Метод scopeActive($query) и вызов User::active()->get() вездеправильный ответ

Разбор

Локальный скоуп оформляет часть запроса как метод модели: public function scopeActive(Builder $q) { $q->where("active", true); }, вызов без префикса scope. Глобальные скоупы применяются ко всем запросам модели, на них построен SoftDeletes. Переопределять all() бессмысленно: запросы строятся через построитель.

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

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