2017-07-17 17 views
0

如何在CakePHP中調試delete()?當我這樣做:如何在CakePHP中調試delete()

debug($this->Sessions->delete($s)); 

我得到這個錯誤:

{ 
    "message": "SQLSTATE[42S22]: Column not found: 1054 Unknown column \u0027session_id\u0027 in \u0027where clause\u0027", 
    "url": "\/api\/sessions\/delete\/2856", 
    "code": 500, 
    "file": "\/var\/www\/vendor\/cakephp\/cakephp\/src\/Database\/Statement\/MysqlStatement.php", 
    "line": 39 
} 

編輯:想通了我的問題,我已經叫SESSION_ID列「sessions_id」表中的錯誤。我更新了這個,它解決了我的問題。不過,我真的很想知道如何正確調試delete()find()。我注意到有一個調試控制檯bin/cake console。然後help調試的東西,但我不知道如何使用它,似乎無法找到任何文件。任何人都可以幫忙嗎?謝謝。

+1

您應該在說「_debug_」時澄清你的意思。 – ndm

+0

@ndm提供更詳細的錯誤信息,理想情況下,還有跟蹤導致問題的確切線路。 – toast

回答

0

錯誤消息直接來自DBMS,而不是來自CakePHP,它告訴你幾乎所有你需要知道的爲什麼查詢失敗,沒有真正的方法來獲得更多的信息。

除非你在談論引發異常的那一行,否則指向一個特定的行將會相當複雜,因爲在這種情況下,沒有一條確切的行導致問題,CakePHP方面工作完美很好,你只是錯誤配置/命名的東西,這導致了一個非工作的SQL查詢被生成。

我會建議使用適當的IDE和像XDebug這樣的可以暫停異常的調試器,然後您可以將棧跟蹤和一組上下文信息放在手邊,並且您可以輕鬆地單步執行代碼。在日誌中也可以找到普通的堆棧跟蹤(/logs/*.log)。