symfony 2.5多对一关系外键null

时间:2018-11-19 15:08:19

标签: symfony foreign-keys many-to-one symfony-2.5

我有两个实体,产品实体和具有多对一关系的avis一个产品可以具有许多avis,但是当我尝试保存评论时,字段produit_id保持为空。我已经很好地配置了关系,我认为控制器中有问题。

这是我的控制器添加avis动作:

public function addAction(Request $request){
    $em =$this->getDoctrine()->getManager();
    $produit=$em->getRepository('redeBundle:produit')->findAll();
    $avis = new avis();
    $avis->setCreatedAt(new \DateTime('now'));
    $form = $this->createForm(new avisType(), $avis);
    $form -> handleRequest($request);
    if($form->isSubmitted() && $form->isValid()){
       $avis->setProduit($produit);
        $em->persist($avis);
        $em->flush();
        return $this->redirect($this->generateUrl('produit_page'));
    }

    $formView=$form->createView();

    return $this->render('myBundle:avisAdd.html.twig',
     array('form'=>$formView));

}

这是我的实体阿维斯

class avis {

/**
 * @var produit
 *
 * @Assert\valid()
 *
 * @ORM\ManyToOne(targetEntity="redemaroc\redeBundle\Entity\produit", 
cascade={"persist"})
 * @ORM\JoinColumn(nullable=false)
 *
 *
 */
private $produit;

 ...
 }

有人可以帮我解决这个问题吗?!

1 个答案:

答案 0 :(得分:0)

可以使用其中一种解决方案

  1. 在Avis类的setProduit方法中,添加以下指令: produit-> addAvis($ this);
  2. 确保在每次调用 $ avis-> setProduit($ produit); 时,必须先添加 $ produit-> addAvis($ avis); ,然后刷新您的数据。

我假设 addAvis 是用于将给定avis添加到您的产品的方法。