If you want to catch Eloquent Query exceptions, use specific QueryException
instead default Exception class, and you will be able to get the exact SQL code of the error.
1try {2 // Some Eloquent/SQL statement3} catch (\Illuminate\Database\QueryException $e) {4 if ($e->getCode() === '23000') { // integrity constraint violation5 return back()->withError('Invalid data');6 }7}