public function grantPermission($object, $rights = array('r' => true, 'w' => true, 'l' => true, 'd' => false)) { $className = get_class($object); /** @var UserSightPermissionType $type */ $type = UserSightPermissionType::where('objectName', '=', $className)->get()[0]; $perm = new UserSightPermission(); $perm->appObjectId = $object->id; $perm->readPermission = $rights['r']; $perm->writePermission = $rights['w']; $perm->linkPermission = $rights['l']; $perm->deletePermission = $rights['d']; $perm->save(); $perm->sightPermissionTypes()->attach($type); $perm->save(); $this->sightPermissions()->attach($perm); }