Глобальная область запросов Laravel без функции GlobalScope () не возвращает нужные записи - PullRequest
0 голосов
/ 06 июня 2018

У меня есть глобальная область запроса под названием ArchiveScope, которая имитирует аналогичную функциональность Soft Deletion.Метод применения этой области выглядит следующим образом:

public function apply(Builder $builder, Model $model)
{
    $builder->where('archived_at', '=', NULL);
}

Поэтому, когда я использую MyModel::all(), он возвращает все строки, которые не имеют метки времени (т. Е. NULL).Но когда я хочу получить все записи (включая архивированные), я все равно получаю тот же результат.Я запускаю это утверждение в повозке:

App\MyModel::withoutGlobalScope(ArchiveScope::class)->get();

Странно, когда я использую withoutGlobalScopes() вместо withoutGlobalScope(ArchiveScope::class), я получаю все записи.

App\MyModel::withoutGlobalScopes()->get();

Ответы [ 2 ]

0 голосов
/ 01 августа 2019

Я решил эту проблему, просто объявив ссылку на класс

use App \ Scopes \ NomeScope;


$a = Model::withoutGlobalScope(NomeScope::class)->get();
0 голосов
/ 06 июня 2018

Определение полного пути к классу решает проблему:

App\MyModel::withoutGlobalScope('App\Scopes\ArchiveScope')->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...