Walidacja unique przy edycji

0

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,

0

Wydaję się, że poradziłem w taki sposób

public function rules()
    {
        return [
            'configuration_id' => 'required|not_in:0',
            'day' => [
                'required',
                Rule::unique('parameters', 'day')
                                ->where('configuration_id', $this->input('configuration_id'))
                                ->ignore($this->parameter_id, 'id'),
            ],
            'water'            => 'required',
            'feed'             => 'required',
            'weight'           => 'required',
            'downs'            => 'required',
        ];
    }

p.s. coś mi się przypomniało całkiem fajnego, nie pamiętam gdzie to przeczytałem... być może gdzieś tutaj...

jaka jest różnica pomiędzy doświadczonym programistą a młodziakiem?

czasem jak coś zadziała coś wyjdzie to doświadczony programista się dziwi a młody ... cieszy
:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1