Leeres DB::getQueryLog()-Array in Laravel 5: Beheben des Problems
Das Abfrageprotokoll von Laravel 5 ist standardmäßig deaktiviert, was dazu führt ein leeres Array beim Aufruf von DB::getQueryLog(). Um dieses Problem zu beheben, aktivieren Sie das Abfrageprotokoll explizit mit einer der folgenden Methoden:
Abfrageprotokoll programmgesteuert aktivieren:
DB::enableQueryLog(); print_r(DB::getQueryLog());
Veranstaltung anmelden Zuhörer:
DB::listen( function ($sql, $bindings, $time) { // Process and store query log data } );
Zusätzliche Tipps:
Mehrere DB-Verbindungen:
Aktivieren und Abrufen von Abfrageprotokollen für bestimmte Zwecke Verbindungen:
DB::connection('my_connection')->enableQueryLog(); print_r( DB::connection('my_connection')->getQueryLog() );
Middleware-Ansatz:
Abfrageprotokollierung in der Handle-Methode der Middleware aktivieren und Protokolle in der Terminate-Methode abrufen:
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()); } }
CLI Ausführung:
Abfrageprotokollierung im artisan.start-Ereignis aktivieren:
$app['events']->listen('artisan.start', function(){ \DB::enableQueryLog(); });
Überlegungen zum Speicher:
Laravel-Stores Protokolle im Speicher abfragen. Um eine übermäßige Speichernutzung zu vermeiden:
Verwenden Sie den folgenden Code, um die Abfrageprotokollierung nur in der Entwicklung zu aktivieren Umgebung:
if (App::environment('local')) { // The environment is local DB::enableQueryLog(); }
Referenzen:
Das obige ist der detaillierte Inhalt vonWarum ist mein DB::getQueryLog()-Array in Laravel 5 leer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!