/** * @param BaseModel $model * @param $localizations * @param $region * @return * @throws ValidationException */ protected function validateAndSaveLocalizations(BaseModel $model, $localizations, $region) { // Check to see if parameters exist in model foreach ($localizations as $parameter => $localization) { if (!$model->isFillable($parameter)) { throw new ValidationException(new MessageBag([$parameter => 'Localization for this parameter is not allowed.'])); } } // Validate the region $regionCode = ['region_code' => $region]; parent::validateRequest($regionCode, Localization::getValidationRules(null, $regionCode)); // Localizations are partial updates so only validate the fields which were sent with the request $this->validateRequest($localizations, $this->getValidationRules($model->getKey(), $localizations), null, true); return $model->localizations()->updateOrCreate($regionCode, array_merge($regionCode, ['localizations' => $localizations])); }