私は多くの関係を持つ複雑なエンティティを持っているので、1つを作成するには多くのページに多くのフォームが必要です。したがって、私は自分のエンティティを維持するためにセッションを使用します。すべてが順調に進んでいますが、フラッシュするときが来ると、エンティティマネージャーは、一部のエンティティは新しいが実際にはdbに格納されていると考えて、「関係を介したエンティティはカスケード持続するように構成されていません」を返します。
たとえば、$ u-> setGroup(Group $ group);を使用して、ManyToOneグループでユーザーを作成します。($ groupはdbからの既存のグループです)。それをセッションに入れ、別のページに戻してフラッシュすると、エンティティマネージャーは、それがdb内の既存のグループであることを知らずに、まったく新しいグループを作成しようとします。
私はこれを克服するために少しトリックを使用します:
$u = $this->get('session')->get('userToAdd');
$group = $em->getRepository('MyBundle\Entity\Group')->find($u->getGroup()->getId());
$u->setGroup($group);
これにより、EMはdbに格納されているグループを認識し、フラッシュは問題なく実行されますが、私のエンティティにはこのような関係がたくさんあるので、すべてのグループに対してこれを行うと非常に便利です。
この問題について何かアイデアはありますか?