Webエンジニアのメモ帳

技術的な話を中心に書いています。

【Laravel】Eloquentで実行されるSQLを確認する方法

short answer

以下のように記述することで、実行されるSQLを確認することができます。

\DB::flushQueryLog();
\DB::enableQueryLog();

// ここにSQLを実行するコードを記述

$queries = \DB::getQueryLog();
\Log::info(print_r($queries, true));
\DB::disableQueryLog();

解説

Webアプリケーションのフレームワークでは、DBを操作するライブラリを使うことが一般的です。

Laravelの場合は普通はEloquentを使うと思いますが、簡単にDBを操作できる一方で、実際に実行されるSQLが分からないという欠点があります。

そこで、実行されるSQLを実際に確認できるようにするのが、上記のコードです。

1行ずつ解説すると

\DB::flushQueryLog();

これは溜まっているクエリのログをクリアするためのコマンドです。

これを行っておくことで、該当のコードにより実行されたSQLだけを確認することができるようになります。

つぎに

\DB::enableQueryLog()

により、以降に実行されたSQLが記録されます。

最後は

\Log::info(print_r($queries, true));

で記録されたSQLをログ出力し

\DB::disableQueryLog();

で無効化します。