J'essaie d'identifier lors de l'insertion d'un enregistrement en utilisant éloquent dans Laravel lorsqu'il génère une exception en raison d'une erreur de champ unique.
Le code que j'ai jusqu'ici est:
try {
$result = Emailreminder::create(array(
'user_id' => Auth::user()->id,
'email' => $newEmail,
'token' => $token,
));
} catch (Illuminate\Database\QueryException $e) {
return $e;
}
Cela jette une exception OK Je ne sais pas quoi faire pour l'identifier comme une erreur de duplication de colonne?
Merci,
Gavin.
Je suppose que vous utilisez MySQL, c'est probablement différent pour les autres systèmes
D'accord, le code d'erreur pour l'entrée en double est 1062 . Et voici comment vous récupérez le code d'erreur de l'exception:
catch (Illuminate\Database\QueryException $e){
$errorCode = $e->errorInfo[1];
if($errorCode == 1062){
// houston, we have a duplicate entry problem
}
}
ajoute ce code dans la classe Handler (exception)
if($e instanceof QueryException){
$errorCode = $e->errorInfo[1];
switch ($errorCode) {
case 1062://code dublicate entry
return response([
'errors'=>'Duplicate Entry'
],Response::HTTP_NOT_FOUND);
break;
case 1364:// you can handel any auther error
return response([
'errors'=>$e->getMessage()
],Response::HTTP_NOT_FOUND);
break;
}
}
...
return parent::render($request, $exception);