Hej,
zapisuję pewne parametry, które są podpięte pod konfigurację tzn. Parametry są elementami konfiguracji.
Poniżej moje reguły walidacyjne - nie pozwalam dodać duplikatu 'day' dla danej konfiguracji. To działa przy dodawaniu.
public function rules()
{
return [
'configuration_id' => 'required|not_in:0',
'day' => [
'required',
Rule::unique('parameters', 'day')->where('configuration_id', $this->input('configuration_id')),
],
'water' => 'required',
'feed' => 'required',
'weight' => 'required',
'downs' => 'required',
];
}
teraz gdy edytuję parametry dostaję komunikat o unikalności ( taki zapis już istnieje ).
Mam też taką walidację na kartotece klientów by pilnować unikalności nazwy
public function rules()
{
return [
'name' => 'required|string|unique:customers,name,' . $this->id,
'street' => 'required|string',
'postal_code' => 'required|string',
'locality' => 'required|string',
'customerTypes' => 'required_without_all'
];
}
i to działa zarówno przy dodawaniu i edycji poprawnie -> mogę edytować nie zmieniając nazwy klienta ( dodanie $this->id )
Jak osiągnąć poprawną edycję parametrów w regule powyżej? Gdy, trochę przez analogię, zmodyfikuję
Rule::unique('parameters', 'day,'.$this->id)->where('configuration_id', $this->input('configuration_id')),
dostaję
"message": "Undefined offset: 3",
"exception": "ErrorException",
"file": "/var/www/html/iApp/vendor/laravel/framework/src/Illuminate/Validation/Concerns/ValidatesAttributes.php",
"line": 746,