Laravel catch Eloquent “Unique” field error

前端 未结 2 1230
无人共我
无人共我 2020-12-08 20:15

I am trying to identify when inserting a record using eloquent in Laravel when it throws an exception because of a unique field error.

The code I have so far is:

相关标签:
2条回答
  • 2020-12-08 20:30

    add this code inside class 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);
    
    0 讨论(0)
  • 2020-12-08 20:39

    I'm assuming you use MySQL, it's probably different for other systems

    Okay first, the error code for duplicate entry is 1062. And here's how you retrieve the error code from the exception:

    catch (Illuminate\Database\QueryException $e){
        $errorCode = $e->errorInfo[1];
        if($errorCode == 1062){
            // houston, we have a duplicate entry problem
        }
    }
    
    0 讨论(0)
提交回复
热议问题