Рекомендуемый способ
Стандартный регистратор в Symfony будет рекомендуемым методом:
изнутри действия:
$this->logMessage('executed SQL: '.$sql);
изнутри модели (или где-либо еще):
sfContext::getInstance()->getLogger()->info('executed SQL: '.$sql);
Эти методы будут вставлять ваши SQL-запросы во вкладку «logs & msgs» на панели инструментов отладки в правильной позиции в цепочке выполнения.
Однако , если вы просто хотите видеть запросы на top вкладки 'logs & msgs' и не нуждаетесь в них хранящиеся в постоянном журнале, вы можете вместо этого использовать $this->debugMessage($sql);
, что также означает, что вы можете видеть запросы вместе, а не искать их в цепочке выполнения журнала.
потенциально предпочтительный способ
Я подозреваю, что вы можете захотеть, чтобы эти SQL-запросы отображались на вкладке "DB". Symfony не поддерживает это напрямую, но вместо этого вы можете взломать это решение:
изнутри действия:
$this->logMessage(sprintf("{sfCreole} executeQuery(): [x.xx ms] %s", $sql));
изнутри модели:
sfContext::getInstance()->getLogger()->info(sprintf("{sfCreole} executeQuery(): [x.xx ms] %s", $sql));
Это имитирует поведение опции отладки в symfony для регистрации SQL-запросов и, следовательно, помещает ваш пользовательский SQL-запрос на вкладку «DB» на панели инструментов отладки. Я оставляю вам возможность выбора времени [x.xx ms] для реализации, если вы этого хотите:)