Laravel уникальная проверка Правило игнорирования обновления - PullRequest
0 голосов
/ 26 мая 2020

У меня есть поле name в моей модели Client, которое должно быть уникальным. Для метода store у меня есть следующие правила:

array (
  'token' => 'string|max:250',
  'directory' => 'max:250',
  'name' => 'required|string|max:250|unique:clients',
)  

Для метода update я изменил этот набор правил, чтобы игнорировать текущий идентификатор, чтобы избежать выявления дубликатов: $rules['name'] = $rules['name'] . ',id,' . $id;

Это создает следующий набор правил (для записи с идентификатором 105):

array (
  'token' => 'string|max:250',
  'directory' => 'max:250',
  'name' => 'required|string|max:250|unique:clients,id,105',
)  

Когда выполняется метод update, во время проверки возвращается ответ The name has already been taken..

Я понимаю, что это хорошо обсуждаемый топи c, но считаю, что придерживаюсь правильного подхода. Может кто-нибудь указать на ошибку в моем логе c, пожалуйста?

Примечание: это работает на Laravel 5.8.

1 Ответ

0 голосов
/ 26 мая 2020
array(
    'token' => 'string|max:250',
    'directory' => 'max:250',
    'name' => [
        'required', 'string', 'max:250',
        \Illuminate\Validation\Rule::unique(Client::class, 'email')->ignore($this->id)
    ]
)  
...