2012-07-15 108 views
3

我有一個用戶和一個報表,與HABTM關係相關。從HABTM表刪除關聯

我可以保存在reports_users表中創建正確記錄的報告,我可以使用$this->User->ReportsUser->..等查看關係表。

現在我想刪除reports_users表中的特定行,但似乎無法做到這一點。

我曾嘗試以下:

$this->User->ReportsUser->deleteAll(array(
    'ReportsUser.report_id' => $this->data['Report']['report_id'], 
    'ReportsUser.user_id' => $this->data['Report']['user_id'] 
)); 

..但它會刪除所有與給定USER_ID行,此查詢:

Bad delete query

我在做什麼錯在這裏。這是deleteAll調用中的錯誤數據嗎?

我不想刪除任何用戶或報告,只是他們之間的關係。

我可以確認表名是正確的,並且變量存在並被設置。

+0

我在這裏看不到太多錯誤。你能確保列名確實是'report_id'嗎? – Magnus 2012-07-15 22:16:23

+0

@Magnus,是的,我相信。 – joakimdahlstrom 2012-07-16 09:08:20

+0

如果刪除'user_id'條件會發生什麼?什麼是生成的查詢? – Magnus 2012-07-16 09:32:24

回答

1

你的代碼似乎沒有錯誤。您的$this->data['ReportUser']['report_id']有問題。最好的方法是首先嚐試打印$this->data。並檢查它是否存在?

出於安全原因,請使用第二個參數$cascade = false,並使用$this->ReportUser->unbindModel()方法解除所有ReportUser模型關聯。

另一個原因似乎是直接通過 $this->User->ReportUser. Try to use $this->ReportUser->deleteAll('your conditions', false);刪除數據。

請問是否不適合你。

+0

感謝您的回覆。 $ this-> ReportUser不是我的對象,我只能使用$ this-> User-> ReportsUser ..所有的變量都存在。 – joakimdahlstrom 2012-07-16 09:07:54