在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));
}
}
}
感謝您的評論。你說的話確實有道理!關於你的問題:爲什麼如果用戶修改客人,但號碼仍然相同(他從列表中刪除一個客人,但添加了一個新客人)? - 不,它不刪除並添加一個新的 - 它更新。如果號碼不同,它只會刪除和添加新的客人。 –
隨着你的代碼 - 如果我們從客人刪除預訂 - 預訂將是多餘的。你會在重新鏈接後刪除這個嗎? –