2010-03-08 66 views
0

我們使用symfony 1.0。我們有一個模塊與Propel對象一起工作。 sql-querys在「DB」菜單下的symfony-debugbar中可見。symfony - 日誌自定義推進查詢

我的問題是,我們還通過propel :: getRS(「select ...」)使用自定義的sql-querys 這個查詢在調試欄中不可見。

有沒有人有一個想法如何做到這一點?

回答

1

推薦方式

標準的記錄器在symfony的將是推薦的方法:

從動作中:

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

從模型中(或其他地方):

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

T hese方法會將您的SQL查詢插入調試工具欄中'執行鏈中正確位置'的'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]選項來實現:)