symfony - журнал пользовательских запросов - PullRequest
0 голосов
/ 08 марта 2010

мы используем symfony 1.0. У нас есть модуль для работы с объектами Propel. Sql-запросы отображаются в панели отладки symfony в меню «DB».

Моя проблема в том, что мы также используем пользовательские sql-запросы через propel :: getRS ("select ...") Эти запросы не отображаются в панели отладки.

У кого-нибудь есть идеи, как это сделать?

1 Ответ

1 голос
/ 08 марта 2010

Рекомендуемый способ

Стандартный регистратор в 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] для реализации, если вы этого хотите:)

...