Symfony em->;flush尝试插入到另一个表中,但出现错误
我用的是symfony3.4。我喜欢使用全局变量,所以我使用了会话。在默认控制器中Symfony em->;flush尝试插入到另一个表中,但出现错误,symfony,doctrine-orm,Symfony,Doctrine Orm,我用的是symfony3.4。我喜欢使用全局变量,所以我使用了会话。在默认控制器中 public function indexAction(SessionInterface $session) { //Some code... $session->set('uoconnecte', $valeur); //Some code... } public function newAction(Request $request, SessionInterface $ses
public function indexAction(SessionInterface $session)
{
//Some code...
$session->set('uoconnecte', $valeur);
//Some code...
}
public function newAction(Request $request, SessionInterface $session){}
$em = $this->getDoctrine()->getManager();
$session = $this->get('session');
$uo1 = $session->get('uoconnecte');
$lieuRangement->setUo($uo1);
$em->persist($lieuRangement);
//die(dump($lieuRangement->getUo()->getNomUO()));
$em->flush();
我在另一个控制器中设置变量和
public function indexAction(SessionInterface $session)
{
//Some code...
$session->set('uoconnecte', $valeur);
//Some code...
}
public function newAction(Request $request, SessionInterface $session){}
$em = $this->getDoctrine()->getManager();
$session = $this->get('session');
$uo1 = $session->get('uoconnecte');
$lieuRangement->setUo($uo1);
$em->persist($lieuRangement);
//die(dump($lieuRangement->getUo()->getNomUO()));
$em->flush();
我得到了足够的值,因为值的die(dump())
显示了它。但是当出现$em->flush()
时,我不知道为什么它会尝试插入另一个表(TypeUO),而这不是$em->persist(Place)
中提到的表,这样做会产生一个错误:
使用参数[null,null,null,null]执行“插入类型___(codeTypeUO,libTypeUO,niveauTypeUO,TypeUo,id)”值(?,,,?)时发生异常:
SQLSTATE[23000]:完整性约束冲突:1048列“codeTypeUO”不能为空。“
我试图清除的实体(LieuRangement)与第二个实体(UniteoOrganizationNelle)有关系
这是控制器代码的一部分
public function indexAction(SessionInterface $session)
{
//Some code...
$session->set('uoconnecte', $valeur);
//Some code...
}
public function newAction(Request $request, SessionInterface $session){}
$em = $this->getDoctrine()->getManager();
$session = $this->get('session');
$uo1 = $session->get('uoconnecte');
$lieuRangement->setUo($uo1);
$em->persist($lieuRangement);
//die(dump($lieuRangement->getUo()->getNomUO()));
$em->flush();
但是当我删除会话变量时,它就工作了。
我怎样才能解决它
感谢您的帮助通过在会话中传输您的
$uo1
变量,EntityManager不知道它。该实体不再是“受管理”的,用条令术语来说。因此,EntityManager认为它是一个新实体(即使它设置了主键字段),并尝试插入它
请看一下在
$em->persist
中提到的内容??我很想看看var_dump($uo1);die();
的结果。非常感谢。我使用了merge而不是persist,它可以工作。