use App\Order;
public function show(Order $order) {
$data = $order->all();
return dd($order->getQueryLog());
Is there any way to display the query built by Eloquent in Laravel?
I tried getQueryLog();
but its not working
use App\Order;
public function show(Order $order) {
$data = $order->all();
return dd($order->getQueryLog());
Is there any way to display the query built by Eloquent in Laravel?
I tried getQueryLog();
but its not working
First you have to enable query log it can be done using
DB::connection()->enableQueryLog();
then you can use below code to see the query log
$queries = DB::getQueryLog();
if you want to see the last executed query
$last_query = end($queries);
to know more about logging see this https://laravel.com/docs/5.0/database#query-logging
Example
public function show(Order $order){
\DB::connection()->enableQueryLog();
$data = $order->all();
$queries = \DB::getQueryLog();
return dd($queries);
}
To see the query logs in laravel.log
file use the following way.
namespace App\Providers;
use DB;
use Log;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
DB::listen(function($query) {
Log::info(
$query->sql,
$query->bindings,
$query->time
);
});
}
// ...
}
To use getQueryLog()
you need to enable it first:
DB::enableQueryLog();
DB::getQueryLog();
If you want to see real queries, you can use Laravel Debugbar, it will show all real queries Laravel created during current request.
Sometimes ->toSql()
is also useful.
Working on 5.6, something like this in AppServiceProvider::boot()
// Log all DB SELECT statements
// @codeCoverageIgnoreStart
if (!app()->environment('testing') && config('app.log_sql')) {
DB::listen(function ($query) {
if (preg_match('/^select/', $query->sql)) {
Log::info('sql: ' . $query->sql);
// Also available are $query->bindings and $query->time.
}
});
}
Then in config/app.php, just so it's easy to enable/disable from amending the .env
'log_sql' => env('LOG_SQL'),
All credit to: https://arjunphp.com/laravel-5-5-log-eloquent-queries/
And this can be parsed for unique queries with:
grep ") sql:" laravel.log | sed -e "s#.*select\(.*\)\[\]#select\1#" | sort -u
I know it's an old question, but it might help others that had the same issue I had.
If you use other connection than the default one, you should specify it to get the query log properly.
\DB::connection('YourConnection')->enableQueryLog();
$test = MyModel::all();
$queries = \DB::connection('YourConnection')->getQueryLog();
dd($queries);
You can use my Laravel package which is work perfectly in Larave 6 and 7. (Not sure about laravel 5 or less.)
For use Install the package via composer: by following command
composer require dipenparmar12/laravel-query-log
restart server. after this you will see
storage/logs/db-query.log
file containing your query logs.
For more details visit Laravel-query-log
Thanks
You can use this package https://github.com/supliu/laravel-query-monitor
Após instalar, abra o terminal e execute o comando:
php artisan laravel-query-monitor
All queries executed by Eloquent will be displayed in real time
Query Execution
\Event::listen('Illuminate\Database\Events\QueryExecuted', function ($query) {
$sql = $query->sql;
$time = $query->time;
$connection = $query->connection->getName();
Log::debug('query : '.$sql);
Log::debug('time '.$time);
Log::debug('connection '.$connection);
});
Query
StaffRegister::all();
Output
[2021-03-14 08:00:57] local.DEBUG: query : select * from `staff_registers`
[2021-03-14 08:00:57] local.DEBUG: time 0.93
[2021-03-14 08:00:57] local.DEBUG: connection mysql
complete structure
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\Log;
use App\Models\StaffRegister;
class AuthController extends Controller
{
public function index(){
\Event::listen('Illuminate\Database\Events\QueryExecuted', function ($query) {
$sql = $query->sql;
$time = $query->time;
$connection = $query->connection->getName();
Log::debug('query : '.$sql);
Log::debug('time '.$time);
Log::debug('connection '.$connection);
});
$obj = StaffRegister::all();
return $obj;
}
}
Accurate Method