Symfony2 と Doctrine2 を使用してバックエンド API を構築しています。この API は、オブジェクトのグラフをデータベースで CRUD に受け取ります。
私は素晴らしい JMSSerializer バンドルを使用して、json でエンコードされたオブジェクトのグラフをデタッチされたエンティティのデタッチされたグラフに逆シリアル化し、そのグラフをデータベースに直接マージしたいと考えています。
私のコードには、親と子の 2 つのエンティティがあります。OneToMany(cascade={"all"}, orphanRemoval=true)
親で定義されたリレーションがあります。
私のデータベースには、ID 1、2、3 の 3 つの子を持つ ID 1 の親行があります。
次のように書きたいと思います (例を単純化するために、ここでは逆シリアル化を使用していません)。
$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) は削除されません。
何か不足している場合、誰かが私を助けることができますか?