[英]Symfony2 ManyToMany with attributes
我正在嘗試在一個視圖中使用刪除/更新/添加屬性來管理多對多關系。
這是我的關系:用戶可以說一些帶有語言的語言。 因此,有一個表供用戶,語言使用,而第三個表用於管理與級別的關系。
這是我的控制器:
public function gererLangueAction(Request $request, User $user){
$form = $this->createForm(new ajouterLangueFormType, $user);
if ($request->getMethod() == 'POST') {
$form->bind($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
if(!empty($request->request->get("intranet_rh_gererlangue")['userLangues']))
foreach($request->request->get("intranet_rh_gererlangue")['userLangues'] as $langue)
{
$l = $em->getRepository('IntranetRhBundle:Langue')->findOneById($langue['langue']);
$userLangues = new UserLangue();
$userLangues->setUser($user);
$userLangues->setLangue($l);
$userLangues->setNiveau($langue['niveau']);
$user->addUserLangue($userLangues);
$em->persist($userLangues);
}
$em->flush();
$this->get('session')->getFlashBag()->add('success', "Les langues de ". $user->getNom() ." ". $user->getPrenom() . " ont été modifiées avec succès !");
return $this->redirect($this->generateUrl('intranet_rh_homepage'));
}else
$this->get('session')->getFlashBag()->add('danger', "Erreur de formulaire !");
}
return $this->render('IntranetRhBundle:User:gererLangue.html.twig',array('user' => $user, 'form' => $form->createView()));
}
我的觀點是正確的,我的JS允許我添加和刪除,並且可以更新和刪除一些已經存在的語言。
但是當我想添加一種語言時,我會收到以下消息:
“類型為Intranet \\ RhBundle \\ Entity \\ UserLangue的實體缺少為字段'user'分配的ID。此實體的標識符生成策略要求在調用EntityManager#persist()之前填充ID字段。如果要自動生成標識符,您需要相應地調整元數據映射。”
但是我不明白為什么,因為我在每堂課上都用我的學說注解:
對於UserLangue:
/**
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Intranet\UserBundle\Entity\User", inversedBy="userLangues")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
*/
private $user;
對於用戶:
/**
* @ORM\OneToMany(targetEntity="Intranet\RhBundle\Entity\UserLangue", mappedBy="user", cascade={"persist", "remove"}, orphanRemoval=true)
**/
private $userLangues;
具有添加和刪除方法。 自3天以來我一直在研究此錯誤,但沒有人遇到類似的錯誤...
您可以嘗試在@ORM\\GeneratedValue(strategy="AUTO")
中添加@ORM\\GeneratedValue(strategy="AUTO")
,但是將關系作為ID並不是一個很好的想法,我認為它甚至都無法工作。 嘗試添加$ id參數並將關系設置為其他參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.