laravelでデータベースを使っているときに、どうしてもSQLのクエリが見たくなる。 そのようなときには、SQLクエリをlaravelのログに出力しましょう。
スポンサーリンク
ログ出力処理の記述
SQLのログをlaravelログに出力する方法は、ネットを調べると色々出てきます。 僕は面倒臭がり屋なので、そのなかでも一番簡単な方法を選びました。
AppServiceProviderに処理を追加
app/Providers/AppServiceProvider.phpに以下コードを追加します。
※LogやDBのファサードは適時追加してください。
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
// 商用環境以外だった場合、SQLログを出力する
if (config('app.env') !== 'production'){
DB::listen(function ($query){
// Log::info("Query Time:[{$query->time}s] $query->sql");
$sql = $query->sql;
for ($i = 0; $i < count($query->bindings); $i++) {
$sql = preg_replace("/\?/", $query->bindings[$i], $sql, 1);
}
Log::info($sql);
});
}
}
これで完了です。 簡単ですね。