Laravel 8 中的唯一用户注册响应

Posted

技术标签:

【中文标题】Laravel 8 中的唯一用户注册响应【英文标题】:Unique User registration response in Laravel 8 【发布时间】:2022-01-14 03:18:26 【问题描述】:

当已经存在具有相同电子邮件 ID 的用户时,我想获得 JSON 响应。

public function register(Request $request)
    
        $user = new User();
        $user->name = $request->input('name');
        $user->email = $request->input('email');
        $user->password = Hash::make($request->input('password'));
        if($user->save())
            if (Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password')])) 
                return response(['result' => true, 'user' => Auth::user()]);
            
        
        return response(['result' => false, 'user' => new User()]);
    

目前我没有得到错误的结果。我收到如下回复

Illuminate\Database\QueryException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'pkxxx@gmail.com' for key 'users_email_unique' (SQL: insert into `users` (`name`, `email`, `password`, `updated_at`, `created_at`) values (Pramod, pkxxx@gmail.com, $2y$10$mB7NKRp/uyfkjHhmS3y05OdrvR.2/nGeeiuJj9JrILLGHoXUUt3ce, 2021-12-09 08:40:30, 2021-12-09 08:40:30))

请向我建议如何获得“用户已使用相同的电子邮件 ID 注册”的回复

【问题讨论】:

【参考方案1】:

我认为你应该使用 laravel 身份验证而不是自己制作系统

laravel 的身份验证脚手架工具包中已经有 LoginContoller / RegisterController 等

https://laravel.com/docs/8.x/starter-kits

【讨论】:

【参考方案2】:

我认为你应该先判断电子邮件是否存在,然后再做下一步

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于Laravel 8 中的唯一用户注册响应的主要内容,如果未能解决你的问题,请参考以下文章

laravel 8:验证唯一的多个表

如何更新 Laravel 集体中的唯一字段? [复制]

如何在 Laravel Lumen 8 中设置响应的 cookie

Laravel 8 - 用户表中的两个外键

如何使用验证“唯一”访问 Laravel 中的自定义文本框名称?

Laravel Passport 来自同一端点的响应同时来自两个用户的两个不同的 access_tokens 在两种情况下都返回第一个用户