par
Hubert Roksor » 18 déc. 2007, 20:44
je n'ai pas trouvé de quoi avancer sur PDO ...
Ce n'est pas PDO qu'il faut attaquer, ce serait plutôt Propel (même si on peut étendre PDO à la place). L'idée serait d'étendre la méthode qui exécute les requêtes pour garder trace de la dernière requête exécutée, mais en fait je viens de télécharger Propel et je vois que c'est déjà ce qu'ils font afin de logger les requêtes. Vu dans
runtime/classes/propel/util/PropelPDO.php:
public function prepare($sql, $driver_options = array())
{
Propel::log($sql, Propel::LOG_DEBUG);
return parent::prepare($sql, $driver_options);
}
...donc logiquement il y a un log quelque part à partir duquel tu devrais pouvoir récupérer ta requête. Au pire, tu peux émuler la méthode qui a disparu
public function prepare($sql, $driver_options = array())
{
$this->lastExecutedQuery = $sql;
Propel::log($sql, Propel::LOG_DEBUG);
return parent::prepare($sql, $driver_options);
}
private $lastExecutedQuery;
public function getLastExecutedQuery()
{
return $this->lastExecutedQuery;
}
Tout ça c'est en imaginant que toutes les requêtes de Propel passent par la même méthode (ce qui ne semble pas le cas pour certaines d'entre elles

). Sinon, essaie d'étendre PDO directement.