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

If you want to catch all types of database exceptions you can catch it on laravel Exception Handler

if ($exception instanceof \PDOException) {
    # render a custom error
}

for more details about how to use laravel Exception Handler check https://laravel.com/docs/7.x/errors


Wrap the lines of code you wish to catch an exception on using try-catch statements

try
{
//write your codes here
}
catch(Exception $e)
{
   dd($e->getMessage());
}

Do not forget to include the Exception class at the top of your controller by saying

Use Exception;

The simplest way to catch any sql syntax or query errors is to catch an Illuminate\Database\QueryException 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(\Illuminate\Database\QueryException $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

Tags:

Sql

Laravel 5