我刚开始使用Zend Framework,所以可能会出现一个愚蠢的问题。
我有一张带有5个复选框的表格。用户可以根据需要单击任意多个复选框。这将进入数据库。 (1:N)
一切正常。但现在我已经到了用户可以编辑帖子的部分。显示复选框以及曾经处于活动状态的复选框。但是我现在如何更新呢?
其余的帖子更新工作正常,收集数据并发送更新:
$this->getDbTable()->update($data, array('post_id = ?' => $id));
现在我想更新Checkboxes,即1:n关系。但是,如果我有4个复选框处于活动状态但是在更新后我只想要3个活动状态,我该怎么做?我应该首先删除所有条目而不是正常插入还是有诀窍呢?
希望有人可以提供帮助。谢谢!
答案 0 :(得分:0)
假设数据库中存在的行是您用来表示应该检查的行,您需要将其删除,因为update()
函数不会这样做。
如果删除/重新插入对于操作来说太昂贵,可能会将检查的值存储在会话中并执行array_diff($previous_selected, $currently_selected)
以获取要删除的项目列表。
需要注意的一点是,默认情况下formCheckbox
视图助手会创建一个隐藏输入,其名称与复选框的名称相同,值为0.