Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah DB::getQueryLog() Mengembalikan Tatasusunan Kosong dalam Laravel 5?

Mengapakah DB::getQueryLog() Mengembalikan Tatasusunan Kosong dalam Laravel 5?

Linda Hamilton
Linda Hamiltonasal
2024-11-13 00:02:01774semak imbas

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

Mengambil Log Masuk Perlaksanaan Pertanyaan Laravel 5: Menyelesaikan DB::getQueryLog() Tatasusunan Kosong

Apabila cuba melihat log untuk pertanyaan yang dilaksanakan , pembangun mungkin menemui nilai pulangan tatasusunan kosong daripada DB::getQueryLog(). Untuk menangani perkara ini, adalah penting untuk terlebih dahulu mendayakan log pertanyaan, yang dilumpuhkan secara lalai dalam Laravel 5 untuk mengoptimumkan penggunaan memori.

Mendayakan Log Pertanyaan

  • Kaedah 1: Dayakan pengelogan pertanyaan untuk semua sambungan:
DB::enableQueryLog();
  • Kaedah 2: Dayakan pengelogan pertanyaan untuk sambungan tertentu (cth., my_connection):
DB::connection('my_connection')->enableQueryLog();

Mendapatkan Log Pertanyaan

Sekali didayakan, log pertanyaan boleh diambil menggunakan:

print_r(DB::getQueryLog());
  • Untuk berbilang sambungan DB, nyatakan sambungan yang diingini dalam panggilan di atas.

Pendekatan Pertengahan

Untuk mendayakan pengelogan pertanyaan hanya semasa permintaan HTTP kitaran hayat:

class LogQueryMiddleware
{
    public function handle($request, Closure $next)
    {
        DB::enableQueryLog();
        $response = $next($request);
        dd(DB::getQueryLog()); // Log queries here
        return $response;
    }
}

// Add the middleware to the app
app()->middleware([LogQueryMiddleware::class]);

Pengelogan Perintah Artisan

Untuk arahan artisan, di mana rantaian middleware tidak dilaksanakan:

// In bootstrap/app.php
app()->events->listen('artisan.start', function() {
    DB::enableQueryLog();
});

Memori Pengurusan

Pertanyaan yang berlebihan boleh membawa kepada masalah ingatan. Adalah disyorkan untuk mendayakan pengelogan pertanyaan hanya untuk tujuan penyahpepijatan:

if (app()->environment('local')) {
    DB::enableQueryLog();
}

Dengan mengikut langkah ini, pembangun boleh melihat log pertanyaan dengan berkesan dan memperoleh cerapan berharga ke dalam interaksi pangkalan data aplikasi mereka.

Atas ialah kandungan terperinci Mengapakah DB::getQueryLog() Mengembalikan Tatasusunan Kosong dalam Laravel 5?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn