Im trying to figure out how to get the raw sql query being executed including the binded data in it. Here is what ive got:
\DB::connection()->enableQueryLog();
$query = \DB::getQueryLog();
$lastQuery = end($query);
And here is what the result looks like:
array(3) {
["query"]=>
string(57) "select * from `table_1` where `field_1` = ? limit 1"
["bindings"]=>
array(1) {
[0]=>
string(34) "xyz"
}
}
So how do I get a dump of a full sql query like this (the good old fashioned way)?
select * from `table_1` where `field_1` = 'xyz' limit 1
Thanks
You may want to check out the Laravel debugbar. I wouldn't develop a Laravel app without it. It will give you a breakdown of all queries (including repeated queries and ajax queries), with the speed they executed at and a note to the line in the controller/method that called them. (It provides TONS more info as well, such as views, gates, routes, etc.)
Also, Laravel has a
toSql()
method that you can use instead of your example. It will only show you the prepared statement as your example does, but it's at least a little cleaner. If you usetoSql()
, you have to apply it before you execute the query though.Another option is to get the queries from Laravel Debugbar:
Try to add event listener for query :
or
Add this in your routes Folder :
Log::info() ==> will log the SQL query in your storage/logs/laravel.log file
var_dump() ==> will display in the API call output