【问题标题】:Give multiple permissions to a role - Spatie为一个角色授予多个权限 - Spatie
【发布时间】:2018-10-25 07:55:55
【问题描述】:

我们如何一次将多个权限分配给一个角色?

    $permission1 = Permission::create(['name' => 'Create Client']);
    $permission2 = Permission::create(['name' => 'View Invoice']);
    $permission3 = Permission::create(['name' => 'Add Product']);

    $role = Role::findById(1);

    $role->givePermissionTo($permission1);

在上面,我只允许第一个。

这也是由$role->syncPermissions($permissions); 实现的,我很困惑 $permission 如何包含多个权限?

有什么建议吗?

【问题讨论】:

    标签: laravel laravel-permission


    【解决方案1】:

    看来您可以将数组传递给givePermissionTo,因此您可以执行以下操作:

    $permission1 = Permission::create(['name' => 'Create Client']);
    $permission2 = Permission::create(['name' => 'View Invoice']);
    $permission3 = Permission::create(['name' => 'Add Product']);
    
    $role = Role::findById(1);
    $role->givePermissionTo([$permission1, $permission2, $permission3]);
    

    【讨论】:

      【解决方案2】:
      1. 您可以将数组中的多个权限传递给givePermissionTo()

      2. 如果要分离之前分配给角色的权限,请使用syncPermissions()

      3. 或者你甚至可以使用 laravel 的同步方法,因为 Role 与 Permissions 有morphToMany 关系。所以$role->permissions()->sync($permissions); 也可以工作

      【讨论】:

        【解决方案3】:

        你好,我的建议是使用

        $role = 角色::findById(1); $role->givePermissionTo(Permission::all());

        【讨论】:

          猜你喜欢
          • 2019-05-16
          • 1970-01-01
          • 2018-10-11
          • 2020-09-11
          • 2021-10-02
          • 2012-07-20
          • 2020-05-28
          相关资源
          最近更新 更多