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
690 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!

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