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


Zend Framework Update Checkboxes in Database

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

我有一个5复选框的表单。用户可以根据需要单击任意数量的复选框。这被输入到数据库中。(1: n)

这一切都很好。但是现在我已经到了用户可以编辑帖子的部分。复选框将被显示,以及哪些是活动的。但我现在要怎么更新呢?

Post Update的其余部分工作正常,收集数据并发送更新:

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

现在我想更新复选框,1:n关系。但如果我有4个活动复选框但更新后我只想要3个活动复选框怎么办?我应该先删除所有的条目,然后再进行普通的插入,还是有什么技巧可以做到?

希望有人能帮忙。谢谢!

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

如果删除/重新插入的操作开销太大,可以将检查过的值存储在会话中,然后执行array_diff($previous_selected, $currently_selected)操作来获取要删除的项列表。

需要注意的一点是,formCheckbox视图助手默认创建一个与复选框同名的隐藏输入,值为0。