Symfony em->;flush尝试插入到另一个表中,但出现错误

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

我用的是symfony3.4。我喜欢使用全局变量,所以我使用了会话。在默认控制器中

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,它可以工作。