首頁 >後端開發 >php教程 >為什麼我的 DB::getQueryLog() 陣列在 Laravel 5 中為空?

為什麼我的 DB::getQueryLog() 陣列在 Laravel 5 中為空?

Susan Sarandon
Susan Sarandon原創
2024-11-13 14:14:02649瀏覽

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

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::connection('my_connection')->enableQueryLog();
    print_r(
     DB::connection('my_connection')->getQueryLog()
    );
  • 其他提示:


    其他小貼士>

    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());
      }
    }
  • 多個資料庫連線:啟用並擷取特定的查詢日誌連接:

    $app['events']->listen('artisan.start', function(){
      \DB::enableQueryLog();
    });

中間件方法:在啟用中間件的句柄方法中查詢日誌記錄並在終止方法中檢索日誌:

  • CLI執行:
  • 在artisan.start 事件中啟用查詢日誌記錄:

    if (App::environment('local')) {
      // The environment is local
      DB::enableQueryLog();
    }

  • 記憶體注意事項:
Laravel儲存查詢記憶體中的日誌。為了避免過多的記憶體使用:僅在偵錯時啟用查詢日誌記錄。 使用以下代碼僅在開發中啟用查詢日誌記錄環境:參考資料:[Laravel 查詢日誌](https://laravel.com/docs/ 5.0/database#query-logging)

以上是為什麼我的 DB::getQueryLog() 陣列在 Laravel 5 中為空?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn