Laravel : Analyser les requêtes SQL générées par Eloquent avec la façade DB

Mis à jour il y a 3 semaines

Un tutoriel pour examiner les requêtes SQL générées et exécutées par Eloquent avec la façade Illuminate\Support\Facades\DB dans un projet Laravel

Wilo Ahadi

Auteur

Wilo A.

Technologies

Laravel, PHP

🌎 La version anglaise de cette publication : Laravel - Analyze SQL Queries Generated by Eloquent with the DB Facade

Le framework PHP Laravel met à disposition la classe Illuminate\Support\Facades\DB, qui permet d'interagir directement avec la base de données sans passer nécessairement par Eloquent (les modèles de Laravel). Toutefois, lorsqu'on utilise Eloquent pour effectuer des requêtes, il peut être utile de connaître les requêtes SQL qui sont exécutées.

Pour obtenir la requête SQL exécutée par Eloquent, ainsi que les valeurs réelles utilisées et le temps d'exécution, la classe DB offre les méthodes suivantes :

  • enableQueryLog() pour activer la journalisation des requêtes
  • getQueryLog() pour récupérer les journaux des requêtes

Il suffit de commencer par utiliser DB::enableQueryLog() avant la ou les requêtes que vous souhaitez examiner, puis de terminer par dd(DB::getQueryLog()) pour afficher le journal. Voici un exemple :

use Illuminate\Support\Facades\DB;

DB::enableQueryLog();

$users = User::with("activities")->where("email", "[email protected]")->get();

dd(DB::getQueryLog());

Ce code source génère un tableau contenant les informations suivantes :

[
  0 => [
    "query" => "select * from `users` where `email` = ?"
    "bindings" => [
      0 => "[email protected]"
    ]
    "time" => 19.88
  ]
  1 => [
    "query" => "select * from `activities` where `activities`.`user_id` in (1)"
    "bindings" => []
    "time" => 1.59
  ]
]

Nous avons donc :

  • query : la requête SQL exécutée
  • bindings : les valeurs réelles utilisées pour remplacer les points d’interrogation (?) dans la requête
  • time : le temps d'exécution de la requête en millisecondes.

Prenez soin de vous ! 😎

Cette publication vous a plu ?
Partagez-la avec vos ami(e)s sur les réseaux sociaux.

Wilo Ahadi

Wilo Ahadi, l'auteur

Passionné de l'informatique, je suis spécialiste en techniques des systèmes et réseaux, développeur web et mobile, infographiste et designer, ... J'aime partager mon expérience en formant sur la plateforme Akili School

Voir profil

Commentaires