Roles can have multiple permissions assigned to them.
Give Permission
Revoke Permission
Sync Permissions
Assign one or more permissions to a role:
$role = Role::findByName('writer');// Single permission$role->givePermissionTo('edit articles');// Multiple permissions$role->givePermissionTo('edit articles', 'delete articles');// Using permission models$role->givePermissionTo($permission);
Remove permissions from a role:
$role = Role::findByName('writer');// Revoke single permission$role->revokePermissionTo('delete articles');
Replace all permissions with a new set:
$role = Role::findByName('writer');// This will remove all existing permissions and add only these$role->syncPermissions(['edit articles', 'publish articles']);
syncPermissions() removes ALL existing permissions before adding new ones.
$role = Role::findByName('writer');// Get all permissions as a collection$permissions = $role->permissions;// Get permission names only$permissionNames = $role->permissions->pluck('name');// Example output: ['edit articles', 'publish articles']// Count permissions$count = $role->permissions()->count();
$role = Role::findByName('admin');// Get all users with this role$admins = $role->users;// Count users with this role$adminCount = $role->users()->count();// Query users$activeAdmins = $role->users() ->where('active', true) ->get();
// Web guard (regular users)$webAdmin = Role::create(['name' => 'admin', 'guard_name' => 'web']);// API guard (API clients)$apiAdmin = Role::create(['name' => 'admin', 'guard_name' => 'api']);// These are treated as completely separate roles
Roles with the same name but different guards are independent entities.