public function grantInheritanceTo(\App\Role $successor, \Illuminate\Database\Eloquent\Collection $predecessors) { $predecessors->each(function ($predecessor) use($successor) { $permissions = $predecessor->permissions()->get(); if (empty($permissions)) { dump('Tried to grant [' . $successor->name . '] The permissions equal to those of [' . $predecessor->name . '] but the latter seems to have none granted.'); } else { foreach ($predecessor->permissions()->get() as $permission) { if ($permission instanceof \App\Permission) { dump('[' . $successor->name . '] Inherited [' . $permission->name . '] Thru [' . $predecessor->name . ']'); $successor->givePermissionTo($permission); } else { $permission = \App\Permission::where(['name' => $permission])->first(); dump('[' . $successor->name . '] Inherited [' . $permission->name . '] Thru [' . $predecessor->name . ']'); $successor->givePermissionTo($permission); } } } }); }