Как проверить 2 поля на уникальность при регистрации пользователя?
Форма регистрации содержит 2 основных уникальных поля (Номер телефона и email)
В файле контроллера
App\Http\Controllers\Auth\RegisterController.php
Создаю такую структуру
protected function validator(array $data){
$messages = [
'email.unique' => 'Данный email зарегестрирован',
'phone.unique' => 'Данный номер телефона зарегестрирован',
'required' => 'Поле объязательно для заполнения',
'accepted' => 'Вы не приняли условия соглашения',
];
$phone = $data['phone'];
$email = $data['email'];
$rules = [
'name' => ['required', 'string', 'max:255'],
'surname' => ['required', 'string', 'max:255'],
'phone' => [
'required',
Rule::unique('users')->where(function ($query) use($phone,$email) {
return $query->where('phone', $phone)
->where('email', $email);
}),
// Rule::unique('users')->ignore($user->id),
],
// 'phone' => ['required', 'string', 'max:255', 'unique:users'],
'email' => ['required', 'string', 'email', 'max:255'],
'password' => ['required', 'string', 'confirmed'],
'checkbox' => ['accepted'],
];
return Validator::make($data, $rules, $messages);
}
Подскажите в чем проблема получаю ошибку о том что данный пользователь уже есть в базе
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '89008007060' for key 'users_phone_unique'
На всякий случай скажу что в базе эти 2 поля уникальны, создавал их через миграционный файл вот таким образом:
$table->string('phone')->unique();
$table->string('email')->unique();
Так же добавлю что в базе уже есть пользователь которого я повторно пытаюсь зарегистрировать но при этом хочу получить ошибки в форму так же как в стандарте ошибку выдает уникальное поле email