数据库中的Zend Framework更新复选框

时间:2011-07-18 19:30:24

标签: php zend-framework zend-db-table

我刚开始使用Zend Framework,所以可能会出现一个愚蠢的问题。

我有一张带有5个复选框的表格。用户可以根据需要单击任意多个复选框。这将进入数据库。 (1:N)

一切正常。但现在我已经到了用户可以编辑帖子的部分。显示复选框以及曾经处于活动状态的复选框。但是我现在如何更新呢?

其余的帖子更新工作正常,收集数据并发送更新:

    $this->getDbTable()->update($data, array('post_id = ?' => $id));

现在我想更新Checkboxes,即1:n关系。但是,如果我有4个复选框处于活动状态但是在更新后我只想要3个活动状态,我该怎么做?我应该首先删除所有条目而不是正常插入还是有诀窍呢?

希望有人可以提供帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

假设数据库中存在的行是您用来表示应该检查的行,您需要将其删除,因为update()函数不会这样做。

如果删除/重新插入对于操作来说太昂贵,可能会将检查的值存储在会话中并执行array_diff($previous_selected, $currently_selected)以获取要删除的项目列表。

需要注意的一点是,默认情况下formCheckbox视图助手会创建一个隐藏输入,其名称与复选框的名称相同,值为0.