Laravel Проверка: мягкое удаление + уникальный адрес электронной почты + обновление - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь настроить проверку регистрации клиента и редактирование профиля.

  1. Я использую мягкое удаление
  2. Электронная почта должна быть уникальной (не считая конечно, исключенные)
  3. Если профиль редактируется (идентификатор присутствует), он должен игнорировать эти поля email

Пока у меня есть

'email' => [
    'required',
    'email',
    'unique:clients,email,NULL,deleted_at,deleted_at,NULL',
],

Сейчас это работает правильно и обнаруживает уникальные электронные письма, которые не были удалены, но это дает мне ошибки, когда мне нужно отредактировать профиль вне клиента. Я попытался добавить дополнительные уникальные настройки, но они, похоже, игнорируются:

'email' => [
    'required',
    'email',
    'unique:clients,email,NULL,deleted_at,deleted_at,NULL',
    Rule::unique('clients')->ignore('id', (int)$request->input('id')) // <- from Laravel docs, but is not working
],

Я нашел решения только с одним из этих требований, но не могу их объединить.

Изменить: Исправление было

'email'=>['required','email',Rule::unique('clients','email')->ignore($request->input('id'))->whereNull('deleted_at')],

1 Ответ

1 голос
/ 09 апреля 2020

попробуйте

 $this->validate($request,[
            'email'=>['required','email',Rule::unique('clients','email')->ignore($id)->whereNull('deleted_at')]
        ]); 

...