0

我有一个用于 Symfony 请求的 createAction。

如何通过创建新的实体值在另一个实体中添加一些值。

请参阅以下 foreach 部分;它出什么问题了?

public function createAction(Request $request)
{
    $entity  = new FooType();
    $form = $this->createForm(new FooTypeType(), $entity);
    $form->bind($request);

    if ($form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $em->persist($entity);
        $em->flush();

        $entities = $em->getRepository('OtherBundle:Lists')->findAll();
        foreach($entities as $list){

            $manager = $this->getDoctrine()->getManager();

            $listValue = new ListValue();
            $listValue->setSpecification( new ListsType(), $list );

            $manager->persist($listValue);
            $manager->flush();
        }

        return $this->redirect($this->generateUrl('foo_foobar_show', array('id' => $entity->getId())));
    }
4

1 回答 1

0

如果您的实体之间有适当的关联映射并使用 Doctrine 的persist选项进行级联操作,则您不必显式地保留相关实体。

在这种情况下,您可以省略

$manager->persist($listValue);

此外,出于性能原因,请确保您只刷新一次entityManager - 您不需要经常刷新一次以上,除非您需要自动生成的新持久实体的 ID!

在您的存储库( addListsToEntity() )或管理器类中创建一个新方法来添加您的列表!

于 2013-05-28T12:53:39.243 回答