在doctine中更新实体一对多关系的最佳方法是什么? 例如:我有一个名为booking的实体,映射到许多访客实体。在Symfony 2/Doctrine 2中更新实体一对多关系的最佳方法
编辑预订时,可以通过添加或删除宾客来更改宾客人数。 目前,我计算了提交的客人人数,如果他们与当前的客人人数不同,我会删除预订客人并重新添加新客人!
对我来说这似乎不正确,并想知道其他人如何解决这个问题。
代码示例:
if (count($collection)) {
$numberGuests = count($this->getEntity()->getGuests());
foreach ($collection as $guest) {
if ($numberGuests != count($guests)) {
// delete guest if the number has changed
$this->getGuestManager()->delete($guest);
} else {
// update entity
$guest->setArrayData(Tools::getData($i, $guests));
}
}
}
感谢您的评论。你说的话确实有道理!关于你的问题:为什么如果用户修改客人,但号码仍然相同(他从列表中删除一个客人,但添加了一个新客人)? - 不,它不删除并添加一个新的 - 它更新。如果号码不同,它只会删除和添加新的客人。 –
随着你的代码 - 如果我们从客人删除预订 - 预订将是多余的。你会在重新链接后删除这个吗? –