Laravel улавливает "уникальную" ошибку поля
Я пытаюсь определить при вставке записи с использованием красноречия в Laravel, когда он генерирует исключение из-за уникальной ошибки поля.
Код, который у меня есть до сих пор:
try {
$result = Emailreminder::create(array(
'user_id' => Auth::user()->id,
'email' => $newEmail,
'token' => $token,
));
} catch (Illuminate\Database\QueryException $e) {
return $e;
}
Он выдает исключение. ОК. Я просто не знаю, что делать, чтобы идентифицировать его как дублируемую ошибку столбца.
Спасибо,
Гэвин.
Ответы
Ответ 1
Я предполагаю, что вы используете MySQL, он, вероятно, отличается для других систем
Хорошо, сначала код ошибки для повторяющейся записи - 1062. И вот как вы извлекаете код ошибки из исключения:
catch (Illuminate\Database\QueryException $e){
$errorCode = $e->errorInfo[1];
if($errorCode == 1062){
// houston, we have a duplicate entry problem
}
}
Ответ 2
добавить этот код внутри класса Handler (исключение)
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);