2013-02-20 23 views
2

在CAKEPHP中,函數$this->element('sql_dump')將在屏幕上打印執行的sql查詢。 $this->element('sql_dump')僅適用於debug mode = 2

這工作得很好,但我想下面的工作:

  • 調試模式必須是0
  • 我不想echo屏幕上的SQL轉儲但其郵寄給自己
  • 這與上一個按鈕,點擊發生(發送錯誤報告)

這是可能的,怎麼樣?

感謝您幫助

+0

使用調試= 0,沒有日誌記錄AFAIK(由於性能原因)。所以這似乎是不可能在現實環境中進行而不會破壞核心。 – mark 2013-02-20 14:21:19

+0

https://github.com/cakephp/cakephp/blob/master/lib/Cake/View/Elements/sql_dump.ctp(實際的sql_dump元素 - 對任何感興趣的人) – Dave 2013-02-20 14:41:55

回答

6

爲了得到調試信息當調試模式是你有執行查詢之前,操作數據源0。

在你的控制器:

$db = $this->MyModel->getDataSource(); 
$db->fullDebug = true; 
$this->MyModel->find(...); 
$log = $db->getLog(); 
$db->fullDebug = false; 
// email yourself the log 
+0

感謝這對我有用! – 2014-01-16 04:24:48

+0

好方法!這工作! – Phuong 2016-12-08 09:59:47