如何使用 Laravel 查询全局范围

How do I use Laravel Query Global Scopes

我正在实施 Laravel 全局范围,如记录的那样 here 但这似乎对我不起作用。下面是我在 User.php 模型

中的代码行
<?php

namespace App;

use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * The "booted" method of the model.
     *
     * @return void
     */
    protected static function booted()
    {
        static::addGlobalScope('age', function (Builder $builder) {
            $builder->where('age', '>' , 100);
        });
    }
}

当我解雇 User::all() 时,它只给我用户查询 select * from users

如果我在这里做错了什么或遗漏了什么,请告诉我...

我终于发现我犯了什么错误。如果有人这样做,请检查以下详细信息。

如问题中所述,我使用的是 Laravel 6.x,但我指的是 Laravel 7.x,两者有很大的不同。 在 Laravel 6.x 中我们使用

protected static function boot(){
   parent::boot();
   static::addGlobalScope(new BlockedUserScope);
}

并且在 Laravel 7.x 中我们使用

protected static function booted(){
   static::addGlobalScope(new BlockedUserScope);
}

在Laravel8.x中我们使用

protected static function booted()
{
    static::addGlobalScope(function ($query) {
        $query
            ->join('model_has_roles', function ($join) {
                $join->on('model_id', '=', 'users.id')
                    ->where('model_type', '=', 'App\Models\User');
            })
            ->join('roles', function ($join) {
                $join->on('role_id', '=', 'roles.id')
                    ->where('roles.name', '=', 'visitor');
            })
            ->select('users.*');
    });
}