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

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

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

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