Nicolas Hachet Architecte d'entreprise

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

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

1
2
3
4
5
6
  
public function geQueries ()  
 {  
 $dbo = $this->getDatasource();  
 return $dbo->_queriesLog;  
 }  

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

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

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

1
2
3
4
5
6
7
8
  
public function getQueries ()  
 {  
 $dbo = $this->getDatasource();  
 $logs = $dbo->_queriesLog;

 return end($logs);  
 }