✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Come registrare la query in Laravel

43

Stai cercando di stampare la query in Laravel? O in altre parole, vuoi registrare le query in Laravel? Entrambe le domande hanno risposte leggermente diverse. Per stampare la query, puoi semplicemente stampare l’ultima query eseguita e visualizzarla su un browser. Ma ti consiglierei di registrare la query in Laravel. In questo modo, tutte le tue query verranno salvate nel file di registro e potrai visualizzarlo in qualsiasi momento.

In questo articolo, ti mostro entrambe le opzioni che aiutano un utente a visualizzare le query nella sua applicazione Laravel.

Quando sviluppi un’applicazione Laravel, a volte potresti imbatterti in una situazione in cui devi vedere se la query scritta è corretta o meno. Ciò è dovuto a diversi motivi: forse gli utenti non ricevono un output previsto, ricevi una risposta lenta da un server di database o non ottieni alcun output come qualcosa di sbagliato nella tua query, ecc. In tutti questi scenari, se stai registrando la query, sarà utile per eseguire il debug del problema.

Come stampare la query in Laravel?

La stampa dell’ultima query eseguita è un processo una tantum. Potrebbe essere necessario stampare semplicemente la query sul browser. Non memorizza la query da nessuna parte. Di seguito è riportato un semplice esempio per stampare la query in Laravel.

DB::enableQueryLog();
$arr_user = DB::table('users')->select('name', 'email as user_email')->get();
dd(DB::getQueryLog());

Qui ho usato due affermazioni DB::enableQueryLog()e dd(DB::getQueryLog()). La prima istruzione abilita la registrazione della query, mentre la seconda stampa effettivamente questo registro sul browser. Questa tecnica di debug funziona anche con Laravel Eloquent.

È possibile utilizzare questo metodo se non si desidera registrare le query. Ma come detto in precedenza questo non è in realtà un modo conveniente. Perché, se segui questa tecnica, devi ripetere queste due affermazioni DB::enableQueryLog()e dd(DB::getQueryLog())per ogni query.

L’opzione migliore è registrare tutte le query nel file di registro.

Query di registro in Laravel

Raccomando una tecnica di registrazione delle query in Laravel. È un modo più semplice e conveniente per gli sviluppatori. Non è necessario andare al luogo di ogni query e scrivere il codice per la registrazione.

Invece, devi solo modificare AppServiceProvider.phpe il gioco è fatto.

Apri il app/Providers/AppServiceProvider.phpfile e aggiungi 2 Facades per ‘File’ e ‘DB’ come segue.

use IlluminateSupportFacadesFile;
use IlluminateSupportFacadesDB;

Successivamente, nel boot()metodo scrivi un codice sottostante che registrerà tutte le tue query Laravel in background.

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
           );
        });
    }
}

Ora, ogni volta che viene eseguita una query, si registrerà automaticamente nel storage/logs/query.logfile. L’utente può visualizzare direttamente le proprie query in questo query.logfile.

In Laravel, è disponibile un altro modo per registrare le query. In questo modo i log delle query vengono archiviati all’interno del storage/logs/laravel.logfile. Per fare ciò, devi inserire il codice seguente nel tuo routes/web.phpfile.

DB::listen(function($sql) {
    Log::info($sql->sql);
    Log::info($sql->bindings);
    Log::info($sql->time);
});

Questo è tutto! Ora tocca a te utilizzare uno dei metodi precedenti per la registrazione delle query. Non è necessario utilizzare entrambi i metodi alla volta.

Si tratta di registrare le query in Laravel. Spero che questo articolo possa essere utile per la tua applicazione. Per favore condividi i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.

articoli Correlati

Fonte di registrazione: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More