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

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

Linda Hamilton
Lepaskan: 2024-11-13 00:02:01
asal
825 orang telah melayarinya

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();
Salin selepas log masuk
  • Kaedah 2: Dayakan pengelogan pertanyaan untuk sambungan tertentu (cth., my_connection):
DB::connection('my_connection')->enableQueryLog();
Salin selepas log masuk

Mendapatkan Log Pertanyaan

Sekali didayakan, log pertanyaan boleh diambil menggunakan:

print_r(DB::getQueryLog());
Salin selepas log masuk
  • 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]);
Salin selepas log masuk

Pengelogan Perintah Artisan

Untuk arahan artisan, di mana rantaian middleware tidak dilaksanakan:

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

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();
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan