So protokollieren Sie Abfragen in Laravel
Möchten Sie die Abfrage in Laravel ausdrucken? Oder möchten Sie Abfragen in Laravel protokollieren? Beide Fragen haben leicht unterschiedliche Antworten. Zum Drucken der Abfrage können Sie einfach die zuletzt ausgeführte Abfrage ausdrucken und in einem Browser anzeigen. Ich würde jedoch empfehlen, die Abfrage in Laravel zu loggen. Dabei werden alle Ihre Abfragen in der Protokolldatei gespeichert und Sie können diese jederzeit einsehen.
In diesem Artikel zeige ich Ihnen beide Optionen, die einem Benutzer helfen, die Abfragen in seiner Laravel-Anwendung anzuzeigen.
Wenn Sie eine Laravel-Anwendung entwickeln, können Sie manchmal auf eine Situation stoßen, in der Sie sehen müssen, ob die schriftliche Abfrage richtig ist oder nicht. Dies hat mehrere Gründe – vielleicht erhalten die Benutzer keine erwartete Ausgabe, Sie erhalten eine langsame Antwort von einem Datenbankserver oder Sie erhalten keine Ausgabe, da mit Ihrer Abfrage etwas nicht stimmt usw. In all diesen Szenarien Wenn Sie die Abfrage protokollieren, hilft es, das Problem zu beheben.
Wie drucke ich eine Abfrage in Laravel?
Das Drucken der zuletzt ausgeführten Abfrage ist ein einmaliger Vorgang. Möglicherweise müssen Sie Ihre Anfrage einfach im Browser ausdrucken. Es speichert die Abfrage nirgendwo. Unten ist ein einfaches Beispiel, um Ihre Anfrage in Laravel zu drucken.
DB::enableQueryLog();
$arr_user = DB::table('users')->select('name', 'email as user_email')->get();
dd(DB::getQueryLog());
Hier habe ich zwei Aussagen DB::enableQueryLog()
und verwendet dd(DB::getQueryLog())
. Die erste Anweisung aktiviert die Abfrageprotokollierung, während die zweite Anweisung dieses Protokoll tatsächlich im Browser ausgibt. Diese Debugging-Technik funktioniert auch mit Laravel Eloquent.
Diese Methode kann verwendet werden, wenn keine Abfragen protokolliert werden sollen. Aber wie bereits erwähnt, ist dies nicht wirklich ein bequemer Weg. Denn wenn Sie dieser Technik folgen, müssen Sie diese beiden Anweisungen DB::enableQueryLog()
und dd(DB::getQueryLog())
für jede Abfrage wiederholen .
Die bessere Option ist die Protokollierung aller Abfragen in der Protokolldatei.
Log-Abfrage in Laravel
Ich empfehle eine Technik zum Protokollieren von Abfragen in Laravel. Es ist eine einfachere und bequemere Methode für Entwickler. Sie müssen nicht zu jeder Abfrage gehen und den Code für die Protokollierung schreiben.
Stattdessen müssen Sie nur bearbeiten AppServiceProvider.php
und Sie sind fertig.
Öffnen Sie die app/Providers/AppServiceProvider.php
Datei und fügen Sie 2 Fassaden für ‘Datei’ und ‘DB’ wie folgt hinzu.
use IlluminateSupportFacadesFile;
use IlluminateSupportFacadesDB;
Als nächstes boot()
schreiben Sie in der Methode einen folgenden Code, der alle Ihre Laravel-Abfragen im Hintergrund protokolliert.
public function boot()
{
if(env('APP_DEBUG')) {
DB::listen(function($query) {
File::append(
storage_path('/logs/query.log'),
$query->sql. ' ['. implode(', ', $query->bindings). ']'. PHP_EOL
);
});
}
}
Wenn nun eine Abfrage ausgeführt wird, wird sie automatisch in der storage/logs/query.log
Datei protokolliert. Der Benutzer kann seine Abfragen direkt in dieser query.log
Datei anzeigen .
In Laravel steht eine weitere Möglichkeit zur Verfügung, um die Abfragen zu protokollieren. Auf diese Weise werden Ihre Abfrageprotokolle in der storage/logs/laravel.log
Datei gespeichert. Dazu müssen Sie den folgenden Code in Ihre routes/web.php
Datei einfügen .
DB::listen(function($sql) {
Log::info($sql->sql);
Log::info($sql->bindings);
Log::info($sql->time);
});
Das ist es! Jetzt liegt es an Ihnen, eine der oben genannten Methoden zum Protokollieren der Abfragen zu verwenden. Sie müssen nicht beide Methoden gleichzeitig verwenden.
Es geht darum, die Abfragen in Laravel zu protokollieren. Ich hoffe, dass dieser Artikel für Ihre Anwendung nützlich ist. Bitte teilen Sie Ihre Gedanken und Vorschläge im Kommentarbereich unten mit.
Zum Thema passende Artikel
- So erstellen Sie eine benutzerdefinierte 404-Fehlerseite in Laravel
- So integrieren Sie den MailChimp-Newsletter in die Laravel-Anwendung