Laravel spatie 向用户分配角色无效

Laravel spatie assign role to user not working

我只是在做文档中的内容,但天知道问题出在哪里。我已将 use HasRoles; 放入我的用户模型

use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable implements JWTSubject
{
    use HasRoles;
}

但一次又一次地收到此错误:

 Call to undefined method Illuminate\Database\Eloquent\Builder::assignRole()

每当在播种机中分配角色时:

  use App\Models\User;
  use Illuminate\Database\Seeder; 
  use Spatie\Permission\Models\Permission;
  use Spatie\Permission\Models\Role;

  public function run()
  {
     $role = Role::where('name', 'Admin')->first();
     $user = User::where(['email' => 'admin@admin.com', 'password' => 'password']);
     $user->assignRole($role);
  }

givePermissionTo 也抛出同样的错误。知道为什么会出现此错误吗?

您可以在 模型实例 上应用 assignRole(),而不是 builder :

public function run()
{
  $role = Role::where('name', 'Admin')->first();
  $user = User::where(['email' => 'admin@admin.com', 'password' => 'password'])->first();
  $user->assignRole($role);
}

添加特征使用HasRoles;在您的用户模型中。

用 use Spatie\Permission\Traits\HasRoles 导入它;在用户模型文件的顶部。