Как исправить ошибку ввода дубликата в Laravel 5.7? - PullRequest
0 голосов
/ 31 мая 2019

Я использую систему верификации пользователей по электронной почте с Laravel 5.7, она работает нормально. но когда я попытался ввести тот же адрес электронной почты с формой подтверждения, он генерирует следующие сообщения.

SQLSTATE [23000]: нарушение ограничения целостности: 1062 Повторяющаяся запись 'mymail@gmail.com' для ключа 'users_email_unique' (SQL: вставить в `users` (` email`, `name`,` address`, `updated_at `,` create_at`) значения (mymail@gmail.com, Banda, Sysney, 2019-05-31 11:32:36, 2019-05-31 11:32:36))

Мой UserController такой,

protected function store(Request $request)
{

    $user = new User;

    $user->email = $request->input('email');
    $user->name = $request->input('name');
    $user->address = $request->input('address');

    $user->save();

    $verifyUser = VerifyUser::create([
        'user_id' => $user->id,
        'token' => str_random(40)
    ]);
}

как можно решить эту проблему?

1 Ответ

0 голосов
/ 31 мая 2019

Как кажется, и это очень часто встречается, ваша таблица users, кажется, имеет UNIQUE INDEX для email, поэтому, если вы попытаетесь создать запись с уже существующим электронным письмом, это нормально, чтобы получить эту ошибку.

Я не уверен, что именно вы хотите сделать из контекста вашего вопроса, но я верю, что если вы просто хотите создать запись VerifyUser, вы можете использовать updateOrCreate() для пользователя и продолжить логику VerifyUser, например:

protected function store(Request $request)
{
    $email = $request->input('email');
    $name = $request->input('name');
    $address = $request->input('address');

    $user = User::updateOrCreate(['email' => $email], ['name' => $name, 'address' => $address]);

    $verifyUser = VerifyUser::create([
        'user_id' => $user->id,
        'token' => str_random(40)
    ]);
}

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...