目次

SQL文を出力して確認

本題に戻りますが、SQL 文を出力する場合は toSql() メソッドを使います。これで、条件などがバインドされる前の SQL が取得できます。

$query->toSql();

例えば下記のような SQL が出力されます。

select id from hoges where name = ? and birthday = ?

バインド変数や実行時間を確認

バインドされた値も知りたい場合は、$query オブジェクトのメソッドでは実現できないので、DB オブジェクトを利用します。クエリ発行の前に、DB::enableQueryLog() を実行しておいて、クエリ発行後に DB::getQueryLog() することで詳細が確認できます。

DB::enableQueryLog();

$query->get();

DB::getQueryLog();

この DB::getQueryLog() の内容をログに出力しておけば以下の情報が確認できます。実行時間も確認できるので便利ですね。

[query] => select id from hoges where name = ? and birthday = ?
[bindings] => Array
  (
    [0] => saratoga
    [1] => 2017-01-01
  )
  [time] => 41.68
)

ただし、ログ出力を有効にすると、それ以降はすべて対象となるので、発行する SQL が多い場合はログが不要なところで DB::disableQueryLog() しておくと良さそうです。

DB::disableQueryLog();

Tips記事一覧

新着記事一覧です。

関連記事一覧

「LaravelのEloquentで実行されるSQL文を出力する」に関連した記事一覧です。

TOP