Laravel spatie 将角色分配给不工作的用户

时间:2021-05-18 15:00:40

标签: laravel roles spatie

我只是在做文档中的内容,但上帝知道问题是什么。我已将 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 也抛出同样的错误。知道为什么会出现此错误吗?

1 个答案:

答案 0 :(得分:1)

您可以将 assignRole() 应用于模型实例,而不是构建器

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