Jak rejestrować zapytanie w Laravel
Czy chcesz wydrukować zapytanie w Laravel? Innymi słowy, czy chcesz rejestrować zapytania w Laravelu? Oba pytania mają nieco inne odpowiedzi. Aby wydrukować zapytanie, możesz po prostu wydrukować ostatnie wykonane zapytanie i wyświetlić je w przeglądarce. Ale sugerowałbym zarejestrowanie zapytania w Laravel. Dzięki temu wszystkie Twoje zapytania zostaną zapisane w pliku dziennika i będziesz mógł je wyświetlić w dowolnym momencie.
W tym artykule pokażę obie opcje, które pomogą użytkownikowi przeglądać zapytania w jego aplikacji Laravel.
Kiedy tworzysz aplikację Laravel, czasami możesz natknąć się na sytuację, w której musisz sprawdzić, czy napisane zapytanie jest poprawne, czy nie. Dzieje się tak z kilku powodów – być może użytkownicy nie otrzymują oczekiwanych wyników, otrzymujesz powolną odpowiedź z serwera bazy danych lub nie otrzymujesz żadnych danych wyjściowych jako coś nie tak z zapytaniem itp. We wszystkich tych scenariuszach, jeśli rejestrujesz zapytanie, pomoże to w rozwiązaniu problemu.
Jak wydrukować zapytanie w Laravel?
Drukowanie ostatniego wykonanego zapytania jest procesem jednorazowym. Być może trzeba będzie po prostu wydrukować zapytanie w przeglądarce. Nie przechowuje nigdzie zapytania. Poniżej znajduje się prosty przykład do wydrukowania zapytania w Laravel.
DB::enableQueryLog();
$arr_user = DB::table('users')->select('name', 'email as user_email')->get();
dd(DB::getQueryLog());
Tutaj użyłem dwóch stwierdzeń DB::enableQueryLog()
i dd(DB::getQueryLog())
. Pierwsza instrukcja umożliwia rejestrowanie zapytań, podczas gdy druga instrukcja faktycznie drukuje ten dziennik w przeglądarce. Ta technika debugowania działa również z Laravel Eloquent.
Można użyć tej metody, jeśli nie chce się logować zapytań. Ale jak wspomniano wcześniej, nie jest to w rzeczywistości wygodny sposób. Ponieważ, jeśli zastosujesz tę technikę, musisz powtórzyć te dwie instrukcje DB::enableQueryLog()
i dd(DB::getQueryLog())
dla każdego zapytania.
Lepszą opcją jest rejestrowanie wszystkich zapytań w pliku dziennika.
Zapytanie dziennika w Laravel
Polecam technikę logowania zapytań w Laravelu. Jest to łatwiejszy i wygodniejszy sposób dla programistów. Nie musisz wchodzić w miejsce każdego zapytania i pisać kodu do logowania.
Zamiast tego wystarczy edytować AppServiceProvider.php
i gotowe.
Otwórz app/Providers/AppServiceProvider.php
plik i dodaj 2 Fasady dla „Plik" i „DB” w następujący sposób.
use IlluminateSupportFacadesFile;
use IlluminateSupportFacadesDB;
Następnie w boot()
metodzie napisz poniższy kod, który będzie logował wszystkie Twoje zapytania Laravel w tle.
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
);
});
}
}
Teraz każde zapytanie zostanie automatycznie zarejestrowane w storage/logs/query.log
pliku. Użytkownik może bezpośrednio przeglądać swoje zapytania w tym query.log
pliku.
W Laravelu dostępny jest jeszcze jeden sposób rejestrowania zapytań. W ten sposób dzienniki zapytań są przechowywane w storage/logs/laravel.log
pliku. Aby to zrobić, musisz umieścić poniższy kod w swoim routes/web.php
pliku.
DB::listen(function($sql) {
Log::info($sql->sql);
Log::info($sql->bindings);
Log::info($sql->time);
});
Otóż to! Teraz do Ciebie należy użycie jednej z powyższych metod do rejestrowania zapytań. Nie musisz używać obu metod jednocześnie.
Chodzi o logowanie zapytań w Laravelu. Mam nadzieję, że ten artykuł będzie przydatny w Twojej aplikacji. Podziel się swoimi przemyśleniami i sugestiami w sekcji komentarzy poniżej.
Powiązane artykuły
- Jak utworzyć niestandardową stronę błędu 404 w Laravel?
- Jak zintegrować biuletyn MailChimp z aplikacją Laravel?