我正在使用 Symfony2 和 Doctrine2 来构建后端 API。此 API 将接收对象图到数据库中的 CRUD。
我正在使用出色的 JMSSerializer 包将对象的 json 编码图反序列化为分离的实体图,然后我想简单地将该图直接合并到数据库中。
在我的代码中,我有 2 个实体:父母和孩子。OneToMany(cascade={"all"}, orphanRemoval=true)
在 Parent 中定义了一个关系。
在我的数据库中,我有一个 ID 为 1 的父行,其中有 3 个 ID 为 1、2、3 的子行。
我想写一些类似的东西(我在这里没有使用反序列化,以简化示例):
$parent = new Parent(); $parent->id = 1 // detached entity
$existing_child = new Child(); $child->id = 2 // detached entity
$new_child = new Child(); // new entity
$parent->addChild($existing_child);
$parent->addChild($new_child);
$em = $this->getDoctrine()
->getEntityManager();
$em->merge($parent);
$em->flush();
这样做,我的新孩子被很好地创建,现有孩子被更新但旧孩子(1和3)没有被删除。
如果我遗漏了什么,有人可以帮助我吗?