如何处理 Laravel 中重复条目的 QueryException

Mit*_*tsa 2 php mysql error-handling exception laravel

这是我尝试处理的模型代码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');
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

调用控制器代码如下所示: $userModel->addUser($userData);

在这里,我不是要打印从model.

获取错误为:

在此处输入图片说明

我究竟做错了什么?如何正确处理异常以及这样做的最佳实践是什么?

Mit*_*tsa 9

我非常接近我的答案,这完全是关于namespace问题和错误显示问题:

Illuminate\Database\QueryException $e 应该: \Illuminate\Database\QueryException $e

        try {
            DB::table('users')->insert($userData);  
        } catch(\Illuminate\Database\QueryException $e){
            $errorCode = $e->errorInfo[1];
            if($errorCode == '1062'){
                dd('Duplicate Entry');
            }
        }
Run Code Online (Sandbox Code Playgroud)

returnthrow错误没有用,但 'dd' 方法有效。因此,这节省了我两次查询以识别重复项并插入的时间,并为此感到高兴:)