Laravel 5 如何修复Laravel 5.7中的重复输入错误?

Laravel 5 如何修复Laravel 5.7中的重复输入错误?,laravel-5,controller,Laravel 5,Controller,我正在使用Laravel 5.7电子邮件中的用户验证系统,该系统运行良好。但当我尝试输入同一封带有验证表单的电子邮件时,它会生成以下消息 SQLSTATE[23000]:完整性约束冲突:1062重复项'mymail@gmail.com'对于键'users\u email\u unique'(SQL:插入'users'('email'、'name'、'address'、'updated\u at'、'created\u at`)值(mymail@gmail.com,班达,西斯尼,2019-05-3

我正在使用Laravel 5.7电子邮件中的用户验证系统,该系统运行良好。但当我尝试输入同一封带有验证表单的电子邮件时,它会生成以下消息

SQLSTATE[23000]:完整性约束冲突:1062重复项'mymail@gmail.com'对于键'users\u email\u unique'(SQL:插入'users'('email'、'name'、'address'、'updated\u at'、'created\u at`)值(mymail@gmail.com,班达,西斯尼,2019-05-31 11:32:362019-05-31 11:32:36)

我的用户控制器是这样的

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)
    ]);
}

如何解决此问题?

由于这似乎也是很常见的,您的
用户
表在
电子邮件上似乎有一个唯一的索引,因此,如果您尝试使用已存在的电子邮件创建条目,则出现此错误是正常的

我不确定您想从问题上下文中做什么,但我相信如果您只想创建一个VerifyUser条目,您可以为User使用
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)
    ]);
}

我希望它能有所帮助,因为它看起来很常见,您的
用户
表在
电子邮件上似乎有一个唯一的索引
,因此,如果您试图用一封已经存在的电子邮件创建一个条目,则出现此错误是正常的

我不确定您想从问题上下文中做什么,但我相信如果您只想创建一个VerifyUser条目,您可以为User使用
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)
    ]);
}

我希望这有帮助

实际上,我不想更新我当前的电子邮件地址。我需要将现有电子邮件地址作为新表行添加到数据表中。然后只需从
users
表的
email
列中删除唯一索引实际上,我不想更新我的当前电子邮件地址。我需要将现有电子邮件地址作为新的表行添加到数据表中。然后只需从
用户
表的
电子邮件
列中删除唯一索引即可