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

Linda Hamilton
Libérer: 2024-11-13 00:02:01
original
764 Les gens l'ont consulté

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();
Copier après la connexion
  • Méthode 2 : Activer la journalisation des requêtes pour une connexion spécifique (par ex. , my_connection) :
DB::connection('my_connection')->enableQueryLog();
Copier après la connexion

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());
Copier après la connexion
  • 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]);
Copier après la connexion

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();
});
Copier après la connexion

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();
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal