2010-03-08 2 views
0

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

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

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

ответ

1

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

Стандартный регистратор в Symfony будет рекомендуемый метод:

изнутри действия:

$this->logMessage('executed SQL: '.$sql); 

внутри модели (или в другом месте):

sfContext::getInstance()->getLogger()->info('executed SQL: '.$sql); 

T методы hese будут вставлять ваши SQL-запросы на вкладку «logs & msgs» на панели инструментов отладки в правильной позиции в цепочке выполнения.

Однако, если вы просто хотите, чтобы увидеть запросы на верхней на вкладке «журналов & 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)); 

Это имитирует поведение опции debug в symfony для регистрации SQL-запросов и, следовательно, будет вытеснять ваш пользовательский SQL-запрос на вкладку «DB» на панели инструментов отладки. Я оставляю вариант времени [x.xx ms] до вас, чтобы реализовать, если вы этого хотите :)

Смежные вопросы