Игнорировать уникальную роль с помощью пользовательского ключа - Laravel - Mongodb - PullRequest
0 голосов
/ 13 июня 2018

В моем проекте с Laravel 5.6 и MongoDB , чтобы проверить мои входные данные в методе обновления, я использую валидатор, как показано ниже,

  $validator = Validator::make($request->all(), [
            'name' => 'string|max:255',
            'phone' => 'string|valid_phone',
            'email' => ['string', 'email', 'max:255',
                Rule::unique('admins','email')->ignore($id),
            ],
            'password' => 'string|min:6',
            'access' => 'numeric',
        ]);

Iхотите, чтобы поле было уникальным, и игнорируйте тот же адрес электронной почты для пользователя со специальным $id.

Все выглядит хорошо!Но когда я вызываю свой маршрут, чтобы обновить моего пользователя и передать текущее электронное письмо пользователя как электронное, оно возвращает ошибку валидатора, например,

"email": [
            "The email has already been taken."
        ]

Таким образом, уникальная проверка работала некорректно!

Мне также присвоили $primaryKey='_id'; в моей пользовательской модели.

В чем проблема?Я что-то пропустил?

1 Ответ

0 голосов
/ 13 июня 2018

Если вы используете $primaryKey='_id' в пользовательской модели, вы должны установить второй параметр в методе ignore.Ниже приводится цитата из документации:

Если ваша таблица использует имя столбца первичного ключа, отличное от id, вы можете указать имя столбца при вызове метода игнорирования

 Rule::unique('admins','email')->ignore($id,'_id')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...