【问题标题】:Laravel spatie assign role to user not workingLaravel spatie 为用户分配角色不工作
【发布时间】:2021-08-07 20:21:00
【问题描述】:

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

【问题讨论】:

    标签: laravel laravel-permission


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2022-10-20
        • 2022-01-21
        • 1970-01-01
        • 2021-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-17
        • 2021-07-14
        相关资源
        最近更新 更多