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".

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

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

Войти через центр авторизации
Похожие вопросы