手軽に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'
                ]);
            });
        }
    }
}