如果用户已经存在于 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 中已经存在具有特定 ID 的电子邮件,如何防止插入电子邮件?