[Laravel] 実行されるSQLをログに残して確認する

データベースの処理が行われた時に、実行時間・クエリ・バインド値をログに保存します。

DB::listen(function ($query) {
    \Log::info("[{$query->time}] $query->sql");
    \Log::info($query->bindings);
});

/app/Providers/AppServiceProvider.php のファイルに、コードを追加します。

class AppServiceProvider extends ServiceProvider
{
    // 略
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        DB::listen(function ($query) {
            \Log::info("({$query->time}) $query->sql");
            \Log::info($query->bindings);
        });
    }
}

ログは /storage/logs/laravel.log に残ります。

[2023-02-27 14:44:17] local.INFO: [3.21] select * from `users` where `id` = ? limit 1  
[2023-02-27 14:44:17] local.INFO: array (
  0 => 1,
)

LaravelLaravel

Posted by kidatti