Laravel 5 で DB::getQueryLog() 配列が空になるのはなぜですか?

Susan Sarandon
リリース: 2024-11-13 14:14:02
オリジナル
588 人が閲覧しました

Why is my DB::getQueryLog() Array Empty in Laravel 5?

Empty DB::getQueryLog() Array in Laravel 5: Resolving the Issue

Laravel 5's query log is disabled by default, resulting in an empty array when calling DB::getQueryLog(). To rectify this issue, explicitly enable the query log using any of the following methods:

  • Programmatically Enable Query Log:

    DB::enableQueryLog();
    print_r(DB::getQueryLog());
    ログイン後にコピー
  • Register Event Listener:

    DB::listen(
      function ($sql, $bindings, $time) {
          // Process and store query log data
      }
    );
    ログイン後にコピー

Additional Tips:

  • Multiple DB Connections:
    Enable and retrieve query logs for specific connections:

    DB::connection('my_connection')->enableQueryLog();
    print_r(
     DB::connection('my_connection')->getQueryLog()
    );
    ログイン後にコピー
  • Middleware Approach:
    Enable query logging in middleware's handle method and retrieve logs in the terminate method:

    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 Execution:
    Enable query logging in the artisan.start event:

    $app['events']->listen('artisan.start', function(){
      \DB::enableQueryLog();
    });
    ログイン後にコピー

Memory Considerations:

Laravel stores query logs in memory. To avoid excessive memory usage:

  • Enable query logging only for debugging.
  • Use the following code to enable query logging only in the development environment:

    if (App::environment('local')) {
      // The environment is local
      DB::enableQueryLog();
    }
    ログイン後にコピー

References:

  • [Laravel Query Logging](https://laravel.com/docs/5.0/database#query-logging)

以上がLaravel 5 で DB::getQueryLog() 配列が空になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート