Skip to content
Advertisement

How do I catch a query exception in laravel to see if it fails?

All I’m trying to do is verify a query.

'SELECT * from table_that_does_not_exist'

Without that erroring out, I’d like to know it failed so I can return a response that states “Error: table does not exist” or the generic error.

Advertisement

Answer

The simplest way to catch any sql syntax or query errors is to catch an IlluminateDatabaseQueryException after providing closure to your query:

try { 
  $results = DB::connection("example")
    ->select(DB::raw("SELECT * FROM unknown_table"))
    ->first(); 
    // Closures include ->first(), ->get(), ->pluck(), etc.
} catch(IlluminateDatabaseQueryException $ex){ 
  dd($ex->getMessage()); 
  // Note any method of class PDOException can be called on $ex.
}

If there are any errors, the program will die(var_dump(...)) whatever it needs to.

Note: For namespacing, you need to first if the class is not included as a use statement.

Also for reference:

Laravel 5.5 API – Query Exception

Laravel 8.x API – Query Exception

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement