Heim > Backend-Entwicklung > PHP-Tutorial > Warum gibt DB::getQueryLog() in Laravel 5 ein leeres Array zurück?

Warum gibt DB::getQueryLog() in Laravel 5 ein leeres Array zurück?

Linda Hamilton
Freigeben: 2024-11-13 00:02:01
Original
802 Leute haben es durchsucht

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

Abfrageausführungsprotokoll in Laravel 5 abrufen: Leeres Array DB::getQueryLog() auflösen

Beim Versuch, das Protokoll für ausgeführte Abfragen anzuzeigen , können Entwickler auf einen leeren Array-Rückgabewert von DB::getQueryLog() stoßen. Um dies zu beheben, ist es wichtig, zunächst das Abfrageprotokoll zu aktivieren, das in Laravel 5 standardmäßig deaktiviert ist, um die Speichernutzung zu optimieren.

Abfrageprotokoll aktivieren

  • Methode 1: Abfrageprotokollierung für alle aktivieren Verbindungen:
DB::enableQueryLog();
Nach dem Login kopieren
  • Methode 2: Abfrageprotokollierung für eine bestimmte Verbindung aktivieren (z. B. my_connection):
DB::connection('my_connection')->enableQueryLog();
Nach dem Login kopieren

Abfrageprotokoll abrufen

Nach der Aktivierung Abfrage durchführen Protokolle können abgerufen werden mit:

print_r(DB::getQueryLog());
Nach dem Login kopieren
  • Für mehrere DB-Verbindungen geben Sie die gewünschte Verbindung im obigen Aufruf an.

Middleware-Ansatz

Um die Abfrageprotokollierung nur während einer HTTP-Anfrage zu aktivieren Lebenszyklus:

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]);
Nach dem Login kopieren

Artisan Command Logging

Für Artisan-Befehle, bei denen Middleware-Ketten nicht ausgeführt werden:

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

Speicher Verwaltung

Übermäßige Abfragen können zu Speicherproblemen führen. Es wird empfohlen, die Abfrageprotokollierung nur zu Debugzwecken zu aktivieren:

if (app()->environment('local')) {
    DB::enableQueryLog();
}
Nach dem Login kopieren

Durch Befolgen dieser Schritte können Entwickler Abfrageprotokolle effektiv anzeigen und wertvolle Einblicke in die Datenbankinteraktionen ihrer Anwendung gewinnen.

Das obige ist der detaillierte Inhalt vonWarum gibt DB::getQueryLog() in Laravel 5 ein leeres Array zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage