0

我们使用 symfony 1.0。我们有一个使用 Propel 对象的模块。sql-querys 在“DB”菜单下的 symfony-debugbar 中可见。

我的问题是我们还通过 propel::getRS("select ...") 使用自定义 sql-querys 这个查询在调试栏中不可见。

有谁知道如何做到这一点?

4

1 回答 1

1

推荐方式

symfony 中的标准记录器将是推荐的方法:

从动作内部:

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

从模型内部(或其他任何地方):

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

这些方法会将您的 SQL 查询插入到执行链中正确位置的调试工具栏中的“日志和消息”选项卡中。

但是,如果您只想在“日志和消息”选项卡顶部查看查询,并且不需要将它们存储在永久日志中,则可以$this->debugMessage($sql);改用,这也意味着您可以一起查看查询,而不是通过日志执行链搜索它们。

一种可能更可取的方式

我怀疑您可能希望这些 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] 选项留给您实施 :)

于 2010-03-08T11:21:28.183 回答