如果用户已经存在于 Laravel 中,如何编写返回响应?

Posted

技术标签:

【中文标题】如果用户已经存在于 Laravel 中,如何编写返回响应?【英文标题】:How to write a return response for if the user already exists in Laravel? 【发布时间】:2021-09-08 03:04:53 【问题描述】:

我开发了一个 API,当用户成功注册为 201 时它会返回一个响应。如果用户已经注册(基于emailID),我想返回一个响应为 422。我该怎么做?

UserController.php

class UserController extends Controller

    public function __construct()
    
        $this->middleware('auth:api', ['except' => ['login', 'register']]);
    

    public function register(Request $request)
    
        $this->validate($request, [
            'fullName' => 'required|string|between:3,15',
            'emailID' => 'required|email|unique:users',
            'password' => 'required|regex:/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).6,$/',
            'mobile' => 'required|digits:10'
        ]);

        $user = new User([
            'fullName' => $request->input('fullName'),
            'emailID' => $request->input('emailID'),
            'password' => bcrypt($request->input('password')),
            'mobile' => $request->input('mobile')
        ]);

        $user->save();

        return response()->json(['message' => 'Successfully Created user'], 201);

        // I am trying follow if condition it's not working
        if ($request->fails()) 
            return response()->json(['message' => "already exits"], 422);
        
    

【问题讨论】:

您在 IF 语句之前返回。它永远不会到达声明。 return response()->json(['message' => 'Successfully Created user'], 201); 移到if fails 条件之后。 你好@CornelRaiu,搬家后还是不行 【参考方案1】:

Model::save() 返回一个您可能使用的布尔值。或者,您可以使用Model::saveOrFail(),如果它无法插入,则会引发异常。确定模型是否已存在的另一种方法是 $exists 属性,但可能尚未设置(尚未测试)。

$user = new User([
    'fullName' => $request->input('fullName'),
    'emailID' => $request->input('emailID'),
    'password' => bcrypt($request->input('password')),
    'mobile' => $request->input('mobile')
]);

$successfull = $user->save();

if (!$successfull) 
    return response()->json(['message' => "already exits"], 422);


return response()->json(['message' => 'Successfully Created user'], 201);

【讨论】:

以上是关于如果用户已经存在于 Laravel 中,如何编写返回响应?的主要内容,如果未能解决你的问题,请参考以下文章

用户在Laravel中更新密码后自动退出。我怎么防止这个?

如何在 Laravel 中编写自定义登录功能

如果 laravel 中已经存在具有特定 ID 的电子邮件,如何防止插入电子邮件?

如果laravel中已经存在具有特定ID的电子邮件,如何防止插入电子邮件?

如果值存在于另一个字段数组中,Laravel 验证规则

如何检查记录是不是已经存在,然后在 laravel 中更新或插入?