Php Laravel全局查询范围';s Without GlobalScope()未返回所需记录

Php Laravel全局查询范围';s Without GlobalScope()未返回所需记录,php,laravel,Php,Laravel,我有一个名为ArchiveScope的全局查询范围,它模仿了类似的软删除功能。该范围的apply方法如下所示: public function apply(Builder $builder, Model $model) { $builder->where('archived_at', '=', NULL); } 因此,当我使用MyModel::all()时,它会返回所有没有时间戳(即NULL)的行。但是,当我想要获取所有记录(包括存档记录)时,仍然会得到相同的结果。我在tinke

我有一个名为ArchiveScope的全局查询范围,它模仿了类似的软删除功能。该范围的apply方法如下所示:

public function apply(Builder $builder, Model $model)
{
    $builder->where('archived_at', '=', NULL);
}
因此,当我使用
MyModel::all()
时,它会返回所有没有时间戳(即NULL)的行。但是,当我想要获取所有记录(包括存档记录)时,仍然会得到相同的结果。我在tinker中运行以下语句:

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

奇怪的是,当我使用
withoutGlobalScope()
而不是
withoutGlobalScope(ArchiveScope::class)
时,我得到了所有的记录


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

定义完整类路径可以解决以下问题:

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

我通过声明类引用解决了这个问题

use App \ Scopes \ NomeScope;


$a = Model::withoutGlobalScope(NomeScope::class)->get();