write ahead log

ロールフォワード用

Laravel(Eloquent)で実行するSQLを確認したい

O/Rマッパーは便利なんだけどパフォーマンスとか考えると生のSQLみたい事がよくある.

というか生SQLの方がわかりやすいことも正直多い....

ということで生のSQLを出す方法を調べた.

1. toSqlを使う

ちょっと見るにはシンプルでよい.

$query = $User::where('id', false)->toSql();
dd($query);

2. enableQueryLogを使う

\DB::enableQueryLog() 以降のクエリを \DB::getQueryLog() でまとめて取得できる.

eager loadingとか考えるときには便利でよい.

\DB::enableQueryLog();

//  何かSQL実行
$user_list = $User::where('id', false)->get();

//  SQLログを取得してdump
dd(\DB::getQueryLog());