laravel5.2 実行SQLのログを取る
laravel5.1 と 5.2 では違う。
laravel5.1 はこうらしい
<?php namespace App\Providers; use DB; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { DB::listen(function($sql, $bindings, $time) { // ここでログにかいたりなんだり }); } /** * Register the service provider. * * @return void */ public function register() { // } }
laravel5.2 ではしれっとこう変わった
<?php namespace App\Providers; use DB; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { DB::listen(function ($query) { // $query->sql // $query->bindings // $query->time // おーこっちのほうがわかりやすいかな? }); } /** * Register the service provider. * * @return void */ public function register() { // } }
開発環境だけログとりましょう
if (config('app.env') !== 'production') { ¥Log::info("Query Time:{$query->time}] $query->sql, data:[[implode(', ', $query->bindings)]]"); }