Задать вопрос
php666
@php666
PHP-макака

Как наиболее правильно обходить в коде глобальный scope?

Добрый день.
Есть банальный глобальный скоп, который работает для нескольких связанных моделей:

abstract class ....
    protected static function boot()
    {
        parent::boot();

        static::addGlobalScope('is_not_archive', function (Builder $builder) {
            $builder->where('archive', '=', 0);
        });
    }


Соответственно, при запросе $object->relation в SQL-запросе, помимо выражения связи, подставляется выражение "archive = 0".

Теперь нужно использовать связь $object->relation, но надо инвертировать scope, выбирать записи с "archive = 1".

Как это сделать наиболее правильно и красиво, без говнокода?
  • Вопрос задан
  • 146 просмотров
Подписаться 1 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Loftschool
    Комплексное обучение PHP
    6 недель
    Далее
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Skillbox
    Профессия PHP-разработчик с нуля до PRO
    7 месяцев
    Далее
Решения вопроса 1
be_a_dancer
@be_a_dancer
Backend/Fullstack Developer
Локальный скоуп, аналогично глобальному, обходится через withoutGlobalScope(). В твоем контексте - Post::withoutGlobalScope("is_not_archive")->get();
Информацию подробнее ты можешь увидеть в официальной документации laravel в главе про scopes.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы