我们使用symfony 1.0。我们有一个使用Propel对象的模块。 sql-querys在“DB”菜单下的symfony-debugbar中可见。
我的问题是我们还通过propel :: getRS(“select ...”)使用自定义sql-querys 此查询在调试栏中不可见。
有没有人知道该怎么做?
答案 0 :(得分:1)
推荐方式
symfony中的标准记录器将是推荐的方法:
来自行动内部:
$this->logMessage('executed SQL: '.$sql);
从模型内部(或其他任何地方):
sfContext::getInstance()->getLogger()->info('executed SQL: '.$sql);
这些方法会将您的SQL查询插入'logs&调试工具栏中的msgs'选项卡位于执行链中的正确位置。
然而 ,如果您只是想查看'log&amp ;;的 top 上的查询msgs'选项卡并不需要将它们存储在永久日志中,您可以使用$this->debugMessage($sql);
代替,这也意味着您可以一起查看查询,而不是通过日志执行链搜索它们。 / p>
可能更可行的方式
我怀疑您可能希望这些SQL查询出现在“数据库”选项卡上。这不是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]选项留给您实施:)