Maison  >  Article  >  développement back-end  >  Pourquoi DB::getQueryLog() renvoie-t-il un tableau vide dans Laravel 5 ?

Pourquoi DB::getQueryLog() renvoie-t-il un tableau vide dans Laravel 5 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-13 00:02:01745parcourir

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

Récupération du journal d'exécution des requêtes dans Laravel 5 : résolution du tableau vide DB::getQueryLog()

Lors de la tentative d'affichage du journal des requêtes exécutées , les développeurs peuvent rencontrer une valeur de retour de tableau vide provenant de DB::getQueryLog(). Pour résoudre ce problème, il est essentiel d'activer d'abord le journal des requêtes, qui est désactivé par défaut dans Laravel 5 pour optimiser l'utilisation de la mémoire.

Activation du journal des requêtes

  • Méthode 1 : Activer la journalisation des requêtes pour toutes les connexions :
DB::enableQueryLog();
  • Méthode 2 : Activer la journalisation des requêtes pour une connexion spécifique (par ex. , my_connection) :
DB::connection('my_connection')->enableQueryLog();

Récupération du journal des requêtes

Une fois activés, les journaux de requêtes peuvent être récupérés en utilisant :

print_r(DB::getQueryLog());
  • Pour plusieurs connexions à la base de données, spécifiez la connexion souhaitée dans l'appel ci-dessus.

Approche middleware

Pour activer la journalisation des requêtes uniquement pendant le cycle de vie des requêtes HTTP :

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

Journalisation des commandes artisanales

Pour les commandes artisanales, où les chaînes de middleware ne sont pas exécutées :

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

Gestion de la mémoire

Des requêtes excessives peuvent entraîner des problèmes de mémoire. Il est recommandé d'activer la journalisation des requêtes uniquement à des fins de débogage :

if (app()->environment('local')) {
    DB::enableQueryLog();
}

En suivant ces étapes, les développeurs peuvent afficher efficacement les journaux de requêtes et obtenir des informations précieuses sur les interactions avec la base de données de leur application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn