04
Dec '14
Those of you who do much work in Laravel will know that dumping the last query performed can be rather a pain. The classic way is to insert the following after the query you want to inspect:
$queries = \DB::getQueryLog(); dd(end($queries));
However this is awkward, hard to remember, and gives you the bindings separately from the main query, leaving you to recombine them manually. After a little thought I decided the best thing was to write my own function that I could insert into /app/start/global.php and then have available to use from anywhere within my application:
/* * Dump last query and exit */ function dddb() { $queries = \DB::getQueryLog(); $query_parts = end($queries); $query = $query_parts['query']; $bindings = $query_parts['bindings']; foreach($bindings as $binding) { if(is_numeric($binding)) $query = preg_replace('/\?/', $binding, $query, 1); else $query = preg_replace('/\?/', "'" . $binding . "'", $query, 1); } dd($query); }
Now all I have to do is call dddb(); from anywhere within my code to get the complete last executed query. No fuss, no pain