Reputation: 622
How can we assign multiple permissions to a single role at once?
$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);
In above, I'm only giving permission to the first one.
As this is also achived by, $role->syncPermissions($permissions);
Im confused how $permission includes multiple permissions?
Any advice please?
Upvotes: 2
Views: 11359
Reputation: 31
hello my suggestion is to use
$role = Role::findById(1); $role->givePermissionTo(Permission::all());
Upvotes: 2
Reputation: 138
You can pass multiple permissions in array to givePermissionTo()
.
If you want to detach previously assigned permissions to the role, use syncPermissions()
Or you can even use laravel's sync method as Role has morphToMany
relation with Permissions. so $role->permissions()->sync($permissions);
also work
Upvotes: 2
Reputation: 33216
It seems you can pass an array to givePermissionTo
, so you could just do the following:
$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]);
Upvotes: 9