【发布时间】:2018-02-04 05:02:19
【问题描述】:
这是我试图处理 duplicate entries 的模型代码:
$userData = ['name' => $name, 'email' => $email, 'password' => $password];
public function addUser($userData) {
try {
DB::table('users')->insert($userData);
} catch (QueryException $e) {
$errorCode = $e->errorInfo[1];
if($errorCode == 1062){
throw ('Duplicate Entry');
}
}
}
调用控制器代码如下:$userModel->addUser($userData);
这里我不想打印从model 收到的任何回复。
得到错误:
我做错了什么?如何正确处理异常以及这样做的最佳实践是什么?
【问题讨论】:
-
在插入之前尝试验证信息。 laravel.com/docs/5.4/validation
-
那部分很常见,有没有办法使用catch块处理重复异常?
-
是的,有一些方法可以处理,但我建议使用验证,如果很常见,请拆分使用相同功能的程序。并针对每种情况首先进行验证
-
无论如何你的代码都是正确的,除了命名空间异常的事实......它应该是 Illuminate\Database\QueryException
标签: php mysql laravel exception error-handling