【发布时间】:2016-02-13 16:41:03
【问题描述】:
我想避免以下错误:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry
当我尝试添加数据库中已存在的电子邮件时,这会显示在我的屏幕上。所以我想用视图中显示的自定义错误消息替换这个错误屏幕。
这是我尝试过的:
//inside app/Exceptions/Handler.php
public function render($request, Exception $e)
{
if ($e instanceof ModelNotFoundException) {
$e = new NotFoundHttpException($e->getMessage(), $e);
}
if ($e instanceof Illuminate\Database\QueryException){
if($e->errorInfo[1] == 1062){
// But It never reaches this point
}
}
return parent::render($request, $e);
}
错误码确实是1062,但问题是没有通过这个:
if ($e instanceof Illuminate\Database\QueryException)
你知道为什么,或者我做错了什么吗?
【问题讨论】:
-
如果你发现
catch (Illuminate\Database\QueryException $e)并检查$errorCode = $e->errorInfo[1];会发生什么? -
嗯,我想在渲染函数中保持顺序。保持所有 if 相同。
-
好的,但是你不能使用这个?
catch (Illuminate\Database\QueryException $e),然后是if($e->errorInfo[1] == 1062){ //it might reach here } -
具体
catch (Illuminate\Database\QueryException $e){ if($e->errorInfo[1] == 1062){ // throw here } }。这对你有用吗? -
你也不想做validatoin ?
标签: php laravel exception laravel-4 laravel-5