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());
Inscrivez-vous à l'événement Auditeur :
DB::listen( function ($sql, $bindings, $time) { // Process and store query log data } );
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() );
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()); } }
CLI Exécution :
Activer la journalisation des requêtes dans l'événement artisan.start :
$app['events']->listen('artisan.start', function(){ \DB::enableQueryLog(); });
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 :
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(); }
Références :
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!