如何在CakePHP中为空时保存HasAndBelongsToMany(habtm)数据

时间:2012-12-22 03:54:00

标签: cakephp has-and-belongs-to-many save cakephp-2.3

我在hasAndBelongsToManyNode之间建立了NodeTag关联。

如果选择了至少一个,我的保存效果很好,但是 - 如果有以前的关联,并且他们尝试保存时没有选择,我的habtm表格不会更新,因为它没有得到任何内容传递给NodeTag

(我不确定这是因为我使用的是javascript和自定义按钮,还是默认的CakePHP复选框做同样的事情。)

2 个答案:

答案 0 :(得分:2)

在我的控制器中,在保存之前,我添加了这个:

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

这样就可以了,如果我没有发送任何NodeTag数据,我现在传递一个空数组,并更新habtm表,以便该节点不再有NodeTags的任何行。

注意:请注意数组结构:['NodeTag'][0] = array();

答案 1 :(得分:0)

我实际上正在使用你的解决方案,直到我意识到可以通过Formhelper实现这一点。将hiddenField选项设置为true('hiddenField' => true)将强制提交空数组。这样做可以省去在控制器中再次检查的麻烦。

我不知道如何使用javascript实现它,但默认复选框具有功能。