laravel

SQL クエリログを取得する

<?php
use Illuminate\Support\Facades\DB;

// …

DB::connection()->enableQueryLog();

// SQL 実行を伴う操作

$queries = DB::getQueryLog();

5.0 の頃のドキュメントには載ってたんだけど 5.4 だと見当たらなくて、そのうち見失いそうなのでメモ。5.4 でも tinker で試して動いた。

ひとつの Eloquent Builder に対しては ->toSql() ->getBindings() を使うという方法もある。以下引用。

stackoverflow.com/a/32373344/4821980
$query = User::first()->jobs();

dd($query->toSql(), $query->getBindings());

常にクエリログを出力したいような用途の場合は ServiceProvider 辺りでゴニョしてファイルに吐いたり Debugbar 使ってブラウザで見たりしたほうがいいですよ。

参考

https://laravel.com/docs/5.0/database#query-logging
https://stackoverflow.com/a/32373344/4821980