DQL to Raw SQL

Я довольно давно работаю с Doctrine ORM, и очень часто при отладке необходимо посмотреть, какой именно SQL запрос получается из DQL запроса. Для этого раньше я использовал $dql->getSqlQuery() вместе с $dql->getParams(). Первая команда отображает SQL-запрос плейсхолдерами (“?”) вместо переменных, а вторая собственно отображает массив переменных. Приходится смотреть туда-сюда, чтобы сопоставить их. Ладно если запрос маленький, а если большой – то это быстро утомляет.Немного покопавшись в коде, я нашел решение, которое хочу вам показать. Единственное требование, это наличие своего класса запроса. У нас он называется DoctrineExtra_Query, он является наследником Doctrine_Query. Также я сделал небольшие корректировки в других классах (которые тоже отнаследовал), чтобы DoctrineExtra_Query генерировался по умолчанию вместо встроенного в ответ на вызов $connection -> getQueryObject(). Пока писать не буду, но если ко-мунибудь будет интересно – спрашивайте в комментах – отвечу. Итак, собственно в классе DoctrineExtra_Query добавляем новую функцию getRawSql(). Вот её текст:

Как видите, ничего сложного нет, зато теперь отладка запрсоов будет на порядок удобнее.