2012-12-22 57 views
1

我在NodeNodeTag之間有hasAndBelongsToMany關聯。如何在CakePHP中爲空時保存HasAndBelongsToMany(habtm)數據

當至少有一個被選中時,我保存的效果很好,但是 - 如果有先前的關聯,並且他們嘗試保存時沒有選中,我的habtm表不會更新,因爲它沒有得到任何通過NodeTag 。 (我不知道這是因爲我使用JavaScript和自定義按鈕,還是默認的CakePHP複選框做同樣的事情)。

回答

2

在我的控制器,保存之前,我添加了這個:

if(!isset($this->request->data['NodeTag'])) { 
    $this->request->data['NodeTag'][0] = array(); 
} 

這使得它,所以如果我不發送任何數據NodeTag,我現在通過一個空數組,並更新habtm表以便此節點不再有任何NodeTags的行。

注:通知陣列結構:['NodeTag'][0] = array();

0

實際上,我是用你的解決方案,直到我恍然大悟,這是可能的表單助手來實現這一目標。將hiddenField選項設置爲true('hiddenField' => true)將強制提交一個空數組。這樣做可以節省您在控制器中再次檢查的麻煩。

我不知道如何用javascript實現它,但默認複選框有功能。

+0

'hiddenField'默認爲'true',所以將它設置爲true什麼也不做。是的,它不會從提交中改變它,但它提交的內容(默認情況下)不會更新HABTM數據。 – Dave