@1001360

Laravel: Как проверить 2 поля на уникальность при регистрации пользователя?

Как проверить 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
  • Вопрос задан
  • 983 просмотра
Пригласить эксперта
Ответы на вопрос 1
@jazzus
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы