Symfony通过CreateAction添加额外字段

时间:2013-05-28 11:23:26

标签: symfony doctrine-orm

我有一个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())));
    }

1 个答案:

答案 0 :(得分:0)

如果您的实体之间存在正确的关联映射,并使用Doctrine的持久选项进行级联操作,则无需明确地保留相关实体。

在这种情况下你可以省略

$manager->persist($listValue);

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

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