CakePHP : récupérer les requêtes SQL exécutées lors du traitement d’une action

24 Mai 2011 3 No tags

CakePHP stocke toutes les requêtes SQL exécutées lors de l’appel d’une action dans un tableau qui se nomme « _queriesLog ». Ce tableau est disponible sur n’importe quel modèle. Il est possible de renvoyer l’ensemble des requêtes SQL comme ceci :

Fichier app/app_model.php

public function geQueries ()
    {
        $dbo = $this->getDatasource();
        return $dbo -> _queriesLog;
    }

La fonction getQueries() peut alors être appelée sur un modèle.

debug($this -> Model -> getQueries());

Par extension, vous pouvez seulement renvoyer la dernière requête SQL exécutée :

public function getQueries ()
    {
        $dbo = $this->getDatasource();
        $logs = $dbo -> _queriesLog;
        
        return end($logs);
    }