Laravel

How to Output the Last Queries Executed in Laravel using QueryLog

When developing applications with Laravel, it's often helpful to inspect the SQL queries executed against the database for debugging or performance optimization purposes. Laravel provides a convenient feature called QueryLog that allows you to capture and analyze the executed queries. In this tutorial, we'll explore how to enable the QueryLog and output the last queries executed.

Enabling QueryLog

To start capturing the executed queries, you need to enable the QueryLog feature in Laravel. You can do this by adding the following code before executing your Eloquent queries:

\DB::enableQueryLog();

This line of code enables the QueryLog for the current database connection.

Executing Queries

Once you have enabled the QueryLog, you can execute your Eloquent queries as usual using Laravel's query builder or Eloquent ORM. For example:

php
$users = User::where('active', true)->get();

Retrieving QueryLog Entries

After executing your queries, you can retrieve the QueryLog entries to examine the executed SQL statements. The getQueryLog method allows you to retrieve an array of all the executed queries. Here's how you can use it:

$queries = \DB::getQueryLog();

The $queries variable will now hold an array of the executed queries, with the most recent queries at the bottom of the array.

Displaying QueryLog Results

To output the last executed queries to the screen, you can use the dd() (or var_dump(), print_r(), etc.) function. Here's an example:

dd($queries);

The dd() function displays the contents of the $queries array, allowing you to inspect the SQL statements, bindings, and execution times.

When you run this code, you will see the QueryLog results on the screen, similar to the following example:

\DB::enableQueryLog(); // Enable query log

// Your Eloquent query executed by using get()

dd(\DB::getQueryLog()); // Show results of log

array(1) {
 [0]=>
 array(3) {
   ["query"]=>
   string(21) "select * from `users`"
   ["bindings"]=>
   array(0) {
   }
   ["time"]=>
   float(0.92)
 }
}

Each query entry in the array includes the SQL statement (query), an array of parameter bindings (bindings), and the execution time in seconds (time).

Conclusion

The QueryLog feature in Laravel provides a convenient way to capture and analyze the executed SQL queries during development. By enabling the QueryLog, executing your queries, and retrieving the QueryLog entries, you can gain valuable insights into the database interactions of your Laravel application.

Leave A Comment