Kuinka kirjata kysely Laraveliin
Haluatko tulostaa kyselyn Laravelissa? Tai toisin sanoen, haluatko kirjautua kyselyihin Laravelissa? Molemmilla kysymyksillä on hieman erilaiset vastaukset. Kyselyn tulostamista varten voit vain tulostaa viimeksi suoritetun kyselyn ja näyttää sen selaimessa. Mutta suosittelen, että kirjaat kyselyn Laraveliin. Tällöin kaikki kyselyt tallennetaan lokitiedostoon ja voit tarkastella sitä milloin tahansa.
Tässä artikkelissa näytän sinulle molemmat vaihtoehdot, jotka auttavat käyttäjää tarkastelemaan kyselyjä Laravel-sovelluksessaan.
Kun kehität Laravel-sovellusta, saatat joskus törmätä tilanteeseen, jossa sinun on tarkistettava, onko kirjoitettu kysely oikea vai ei. Tämä johtuu useista syistä – ehkä käyttäjät eivät saa odotettua tulosta, saat vastauksen hitaasti tietokantapalvelimelta tai et saa mitään tulostusta vikana kyselyssäsi jne. Kaikissa näissä tilanteissa jos kirjaat kyselyn, se auttaa ongelman virheenkorjauksessa.
Kuinka kysely tulostetaan Laravelissa?
Viimeisen suoritetun kyselyn tulostaminen on kertaluonteinen prosessi. Saatat joutua vain tulostamaan kyselysi selaimeen. Se ei tallenna kyselyä mihinkään. Alla on yksinkertainen esimerkki kyselyn tulostamisesta Laravelissa.
DB::enableQueryLog();
$arr_user = DB::table('users')->select('name', 'email as user_email')->get();
dd(DB::getQueryLog());
Tässä olen käyttänyt kahta lausetta DB::enableQueryLog()
ja dd(DB::getQueryLog())
. Ensimmäinen käsky mahdollistaa kyselyn kirjaamisen, kun taas toinen käsky tulostaa tämän lokin selaimelle. Tämä virheenkorjaustekniikka toimii myös Laravel Eloquentin kanssa.
Tätä menetelmää voidaan käyttää, jos he eivät halua kirjautua kyselyihin. Mutta kuten aiemmin sanottiin, tämä ei ole oikeastaan kätevä tapa. Koska, jos noudatat tätä tekniikkaa, sinun on toistettava nämä kaksi lausetta DB::enableQueryLog()
ja dd(DB::getQueryLog())
jokaiselle kyselylle.
Parempi vaihtoehto on kaikkien kyselyjen kirjaaminen lokitiedostoon.
Lokikysely Laravelissa
Suosittelen tekniikkaa, jolla kyselyt kirjataan Laraveliin. Se on helpompi ja kätevämpi tapa kehittäjille. Sinun ei tarvitse mennä jokaisen kyselyn paikkaan ja kirjoittaa kirjaamista varten koodia.
Sen sijaan sinun tarvitsee vain muokata AppServiceProvider.php
ja olet valmis.
Avaa app/Providers/AppServiceProvider.php
tiedosto ja lisää 2 julkisivua tiedostoille ja DB: lle seuraavasti.
use IlluminateSupportFacadesFile;
use IlluminateSupportFacadesDB;
Seuraavaksi boot()
menetelmässä kirjoittaa alla koodi, joka kirjautuu kaikki Laravel kyselyt taustalla.
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
);
});
}
}
Nyt kun kysely suoritetaan, se kirjautuu automaattisesti storage/logs/query.log
tiedostoon. Käyttäjä voi tarkastella kyselyitä suoraan tässä query.log
tiedostossa.
Laravelissa on vielä yksi tapa kyselyjen kirjaamiseen. Tällä tavalla kyselylokisi tallennetaan storage/logs/laravel.log
tiedostoon. Tätä varten sinun on lisättävä alla oleva koodi routes/web.php
tiedostoon.
DB::listen(function($sql) {
Log::info($sql->sql);
Log::info($sql->bindings);
Log::info($sql->time);
});
Se siitä! Nyt sinun on käytettävä jompaa kumpaa yllä olevista menetelmistä kyselyjen kirjaamiseen. Sinun ei tarvitse käyttää molempia menetelmiä kerrallaan.
Kyse on kyselyjen kirjaamisesta Laraveliin. Toivon, että tämä artikkeli on hyödyllinen sovelluksellesi. Jaa ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.