Empty DB::getQueryLog() Array dalam Laravel 5: Menyelesaikan Isu
Log pertanyaan Laravel 5 dilumpuhkan secara lalai, mengakibatkan tatasusunan kosong apabila memanggil DB::getQueryLog(). Untuk membetulkan isu ini, dayakan log pertanyaan secara eksplisit menggunakan mana-mana kaedah berikut:
Dayakan Log Pertanyaan Secara Program:
DB::enableQueryLog(); print_r(DB::getQueryLog());
Daftar Pendengar Acara:
DB::listen( function ($sql, $bindings, $time) { // Process and store query log data } );
Petua Tambahan:
Berbilang Sambungan DB:
Dayakan dan dapatkan semula log pertanyaan untuk sambungan tertentu:
DB::connection('my_connection')->enableQueryLog(); print_r( DB::connection('my_connection')->getQueryLog() );
Pendekatan Pertengahan:
Dayakan pengelogan pertanyaan dalam kaedah pengendalian middleware dan dapatkan semula log dalam kaedah penamat:
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()); } }
Pelaksanaan CLI:
Dayakan pengelogan pertanyaan dalam artisan.start acara:
$app['events']->listen('artisan.start', function(){ \DB::enableQueryLog(); });
Pertimbangan Ingatan:
Laravel menyimpan log pertanyaan dalam ingatan. Untuk mengelakkan penggunaan memori yang berlebihan:
Gunakan kod berikut untuk membolehkan pengelogan pertanyaan hanya dalam persekitaran pembangunan:
if (App::environment('local')) { // The environment is local DB::enableQueryLog(); }
Rujukan:
Atas ialah kandungan terperinci Mengapa DB::getQueryLog() Array saya Kosong dalam Laravel 5?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!