Maison > développement back-end > tutoriel php > Pourquoi mon tableau DB::getQueryLog() est-il vide dans Laravel 5 ?

Pourquoi mon tableau DB::getQueryLog() est-il vide dans Laravel 5 ?

Susan Sarandon
Libérer: 2024-11-13 14:14:02
original
642 Les gens l'ont consulté

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

Tableau DB::getQueryLog() vide dans Laravel 5 : résolution du problème

Le journal des requêtes de Laravel 5 est désactivé par défaut, ce qui entraîne un tableau vide lors de l'appel de DB::getQueryLog(). Pour résoudre ce problème, activez explicitement le journal des requêtes à l'aide de l'une des méthodes suivantes :

  • Activer par programme le journal des requêtes :

    DB::enableQueryLog();
    print_r(DB::getQueryLog());
    Copier après la connexion
  • Inscrivez-vous à l'événement Auditeur :

    DB::listen(
      function ($sql, $bindings, $time) {
          // Process and store query log data
      }
    );
    Copier après la connexion

Conseils supplémentaires :

  • Connexions DB multiples :
    Activer et récupérer les journaux de requêtes pour des tâches spécifiques connexions :

    DB::connection('my_connection')->enableQueryLog();
    print_r(
     DB::connection('my_connection')->getQueryLog()
    );
    Copier après la connexion
  • Approche middleware :
    Activer la journalisation des requêtes dans la méthode handle du middleware et récupérer les journaux dans la méthode de terminaison :

    class BeforeAnyDbQueryMiddleware
    {
      // Enable query logging before DB operations
      public function handle($request, Closure $next)
      {
          DB::enableQueryLog();
          return $next($request);
      }
    
      // Retrieve query log after DB operations
      public function terminate($request, $response)
      {
          dd(DB::getQueryLog());
      }
    }
    Copier après la connexion
  • CLI Exécution :
    Activer la journalisation des requêtes dans l'événement artisan.start :

    $app['events']->listen('artisan.start', function(){
      \DB::enableQueryLog();
    });
    Copier après la connexion

Considérations relatives à la mémoire :

Magasins Laravel les journaux de requêtes en mémoire. Pour éviter une utilisation excessive de la mémoire :

  • Activez la journalisation des requêtes uniquement pour le débogage.
  • Utilisez le code suivant pour activer la journalisation des requêtes uniquement dans le développement environnement :

    if (App::environment('local')) {
      // The environment is local
      DB::enableQueryLog();
    }
    Copier après la connexion

Références :

  • [Journalisation des requêtes Laravel](https://laravel.com/docs/ 5.0/base de données#query-logging)

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