Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

sql

laravel-5

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.

like image 273
KingKongFrog Avatar asked Nov 12 '15 19:11

KingKongFrog


People also ask

How do I get exception error in Laravel?

In Laravel 5 you can catch exceptions by editing the render method in app/Exceptions/Handler. php . This will be applied to ANY exception in AJAX requests. If your app is sending out an exception of App\Exceptions\MyOwnException , you check for that instance instead.

How do you catch a database exception?

Try: Program statements that can raise the exception should be kept within a try block. Catch: If any exception occurs in the try block, it will be thrown. We can catch that exception using the Catch block and handle it in the code. Throw: System-generated exceptions are automatically thrown by JVM.


1 Answers

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

like image 112
Tim Lewis Avatar answered Sep 25 '22 08:09

Tim Lewis