Выбор ответа Junior Eloquent, N+1 и миграции обновлено
Локальные скоупы
Вопрос
Как в Eloquent переиспользовать условие «только активные пользователи»?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Метод scopeActive($query) и вызов User::active()-get() везде. Локальный скоуп оформляет часть запроса как метод модели: public function scopeActive(Builder $q) { $q-where("active", true); }, вызов без префикса scope.
Варианты ответа
- Скопировать
where("active", true)во все места запросов - Создать представление в базе и отдельную модель поверх него
- Переопределить метод
all()в модели, добавив условие - Метод
scopeActive($query)и вызовUser::active()->get()вездеправильный ответ
Разбор
Локальный скоуп оформляет часть запроса как метод модели: public function scopeActive(Builder $q) { $q->where("active", true); }, вызов без префикса scope. Глобальные скоупы применяются ко всем запросам модели, на них построен SoftDeletes. Переопределять all() бессмысленно: запросы строятся через построитель.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.