where("group", $group) ->when(count($keys) > 0, function ($query) use ($keys) { return $query->whereIn("key", $keys); }) ->get(); $rules = []; foreach ($customFields as $customField) { $rule = $this->customFieldToRule($customField); if (! $rule) { continue; } $rules[$customField->key]= $rule; } return $rules; } protected function customFieldToRule(CustomField $customField): array { $rule = []; if ($customField->required == 1) { $rule[] = "required"; } $typeRule = match (CustomFieldType::tryFrom($customField->type)) { CustomFieldType::TEXT => "string", CustomFieldType::TEXTAREA => "string", CustomFieldType::SELECT => $customField->options ? Rule::in(array_column($customField->options, "value")) : "", CustomFieldType::NUMBER => "numeric", default => "" }; if ($typeRule) { $rule[] = $typeRule; } return $rule; } }