我在Node
和NodeTag
之間有hasAndBelongsToMany
關聯。如何在CakePHP中爲空時保存HasAndBelongsToMany(habtm)數據
當至少有一個被選中時,我保存的效果很好,但是 - 如果有先前的關聯,並且他們嘗試保存時沒有選中,我的habtm
表不會更新,因爲它沒有得到任何通過NodeTag
。 (我不知道這是因爲我使用JavaScript和自定義按鈕,還是默認的CakePHP複選框做同樣的事情)。
我在Node
和NodeTag
之間有hasAndBelongsToMany
關聯。如何在CakePHP中爲空時保存HasAndBelongsToMany(habtm)數據
當至少有一個被選中時,我保存的效果很好,但是 - 如果有先前的關聯,並且他們嘗試保存時沒有選中,我的habtm
表不會更新,因爲它沒有得到任何通過NodeTag
。 (我不知道這是因爲我使用JavaScript和自定義按鈕,還是默認的CakePHP複選框做同樣的事情)。
在我的控制器,保存之前,我添加了這個:
if(!isset($this->request->data['NodeTag'])) {
$this->request->data['NodeTag'][0] = array();
}
這使得它,所以如果我不發送任何數據NodeTag
,我現在通過一個空數組,並更新habtm
表以便此節點不再有任何NodeTags的行。
注:通知陣列結構:['NodeTag'][0] = array();
實際上,我是用你的解決方案,直到我恍然大悟,這是可能的表單助手來實現這一目標。將hiddenField選項設置爲true('hiddenField' => true
)將強制提交一個空數組。這樣做可以節省您在控制器中再次檢查的麻煩。
我不知道如何用javascript實現它,但默認複選框有功能。
'hiddenField'默認爲'true',所以將它設置爲true什麼也不做。是的,它不會從提交中改變它,但它提交的內容(默認情況下)不會更新HABTM數據。 – Dave