手軽にLaravelのクエリをログ出力する
Laravelで実行されたSQLを確認する方法は幾つもありますが、
必要な時だけ、手軽に確認ができるようにする方法をメモしておきます。
試した環境
Laravel: v6.14.0
コード
まずは、切り替え用の config を作成します。
SQL_DEBUG=true
本番環境等では特に意識しなくて良いよう、デフォルトは false とします。
'sql_debug' => env('SQL_DEBUG', false),
また、コードを追記するのは、以下のファイルのみです。
<?php
namespace App\Providers;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
//...
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
if (config('app.sql_debug')) {
DB::listen(function ($query) {
Log::info([
'sql' => $query->sql,
'bindings' => $query->bindings,
'time' => $query->time.' ms'
]);
});
}
}
}