protected function updateResorces(&$db_resources_map, &$config_resources) { $db_resources = array_keys($db_resources_map); $config_resources = array_keys($config_resources); // delete group resources that are not in config $not_in_config_resources = array_diff($db_resources, $config_resources); if (count($not_in_config_resources)) { GroupResources::whereIn('resource', $not_in_config_resources)->delete(); } // delete role permissions then are not in config $deleted_permission_ids = array(); foreach ($not_in_config_resources as $deleted_resource) { $deleted_permission_ids[] = $db_resources_map[$deleted_resource]; } if (count($deleted_permission_ids)) { RolePermission::whereIn('permission_id', $deleted_permission_ids)->delete(); } // add the new resources $new_resources = array_diff($config_resources, $db_resources); \Eloquent::unguard(); foreach ($new_resources as $resource) { GroupResources::create(array('resource' => $resource)); } \Eloquent::reguard(); GroupResources::refreshGroupResources(); }