Skip to content
Advertisement

Laravel catch Eloquent “Unique” field error

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:

try {

    $result = Emailreminder::create(array(
                       'user_id' => Auth::user()->id,
                       'email' => $newEmail,
                       'token' => $token,
              ));

} catch (IlluminateDatabaseQueryException $e) {
    return $e;
}

It throws an exception OK I just don’t know what to do to identify it as a column duplicate error?

Thanks,

Gavin.

Advertisement

Answer

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 (IlluminateDatabaseQueryException $e){
    $errorCode = $e->errorInfo[1];
    if($errorCode == 1062){
        // houston, we have a duplicate entry problem
    }
}
User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement