Laravel 5 の空の DB::getQueryLog() 配列: 問題の解決
Laravel 5 のクエリログはデフォルトで無効になっており、その結果、 DB::getQueryLog() を呼び出すときの空の配列。この問題を修正するには、次のいずれかの方法を使用してクエリ ログを明示的に有効にします:
プログラムでクエリ ログを有効にする:
DB::enableQueryLog(); print_r(DB::getQueryLog());
イベント リスナーの登録:
DB::listen( function ($sql, $bindings, $time) { // Process and store query log data } );
追加のヒント:
複数の DB 接続:
特定の接続のクエリ ログを有効にして取得:
DB::connection('my_connection')->enableQueryLog(); print_r( DB::connection('my_connection')->getQueryLog() );
ミドルウェア アプローチ:
ミドルウェアの handle メソッドでクエリ ログを有効にし、terminate メソッドでログを取得します:
class BeforeAnyDbQueryMiddleware { // Enable query logging before DB operations public function handle($request, Closure $next) { DB::enableQueryLog(); return $next($request); } // Retrieve query log after DB operations public function terminate($request, $response) { dd(DB::getQueryLog()); } }
CLI 実行:
artisan.start でクエリ ログを有効にします。イベント:
$app['events']->listen('artisan.start', function(){ \DB::enableQueryLog(); });
メモリに関する考慮事項:
Laravel はクエリログをメモリに保存します。過度のメモリ使用を避けるには:
開発環境でのみクエリ ログを有効にするには、次のコードを使用します:
if (App::environment('local')) { // The environment is local DB::enableQueryLog(); }
参考文献:
以上がLaravel 5 で DB::getQueryLog() 配列が空になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。