Raw SQL from Doctrine Query Object – Revised
A few months ago I posted an article talking about how to get the raw SQL from a Doctrine Query Object but with the release of Symfony 1.3 and Symfony 1.4 it would appear that the code no longer works. As a result, I’ve updated the code to work with Symfony 1.2 – 1.4 and you can find the updated source below:-
function get_raw_sql($query) {
if(!($query instanceof Doctrine_Query)) {
throw new sfException('Not an instanse of a Doctrine Query');
}
$query->limit(0);
if(is_callable(array($query, 'buildSqlQuery'))) {
$queryString = $query->buildSqlQuery();
$query_params = $query->getParams();
$params = $query_params['where'];
} else {
$queryString = $query->getSql();
$params = $query->getParams();
}
$queryStringParts = split('\?', $queryString);
$iQC = 0;
$queryString = "";
foreach($params as $param) {
if(is_numeric($param)) {
$queryString .= $queryStringParts[$iQC] . $param;
} elseif(is_bool($param)) {
$queryString .= $queryStringParts[$iQC] . $param*1;
} else {
$queryString .= $queryStringParts[$iQC] . '\'' . $param . '\'';
}
$iQC++;
}
for($iQC;$iQC < count($queryStringParts);$iQC++) {
$queryString .= $queryStringParts[$iQC];
}
echo $queryString;
}
I hope that it proves useful.
Enjoyed this article?
Thank you for reading this article! If you found the information valuable and enjoyed your time here, consider supporting my work by buying me a coffee. Your contribution helps fuel more content like this. Cheers to shared knowledge and caffeine-fueled inspiration!
Originally published at https://chrisshennan.com/blog/raw-sql-from-doctrine-query-object-revised