This is my API register method for taking new user registration into the Database.
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()){
response (['result' => true]);
}
return response(['result' => false,]);
}
Now when I register from the same email Id, I am getting errors like below
Illuminate\Database\QueryException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '[email protected]' for key 'users_email_unique' (SQL: insert into `users` (`name`, `email`, `password`, `updated_at`, `created_at`) values (Pramod, [email protected], y$WJJrNjB8K/jGSXpPagVjSujZcifKXrzs3gnvPcjSK3W1c.IekaBna, 2021-12-16 07:46:56, 2021-12-16 07:46:56))
I want to get a false result response on a duplicate email registration
CodePudding user response:
You can add Validation using Exists:
Example: $user->where('email',$request->input('email'))->exists()
See the below code:
public function register(Request $request)
{
$user = new User();
if(!$user->where('email',$request->input('email'))->exists()){
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->password = Hash::make($request->input('password'));
if($user->save()){
return response(['result' => true]);
}else{
return response(['result' => false]);
}
}
return response(['result' => false,]);
}
CodePudding user response:
You can use Laravel validation:
public function register(Request $request)
{
$validated = $request->validate([
'email' => 'required|unique:users',
]);
if($validation->fails()){
return response()->json($validation->errors());
}
$user = new User();
$user->name = $request->input('name');
$user->email = $request->input('email');
$user->password = Hash::make($request->input('password'));
if($user->save()){
return response (['result' => true]);
}
return response(['result' => false,]);
}
CodePudding user response:
You can be use Form Request.
https://laravel.com/docs/8.x/validation#form-request-validation
or you can use the following
public function register(Request $request){
$data = $request->validate([
'email' => 'required|email|unique:users',
'name' => 'required|string',
'password' => 'required|string'
]);
$data['password'] = bcrypt($data['password']);
try {
User::create($data);
return response()->json([
'message' => __('User created'),
'result' => true
]);
}catch (\Exception $exception){
return response()->json([
'message' => $exception->getMessage(),
'result' => false
]);
}
}
