Em-> flush пытается вставить в другую таблицу и получает ошибки - PullRequest
0 голосов
/ 10 декабря 2018

Я использую Symfony 3.4.Я хотел бы использовать глобальные переменные, поэтому я использовал сеансы.В контроллере по умолчанию

public function indexAction(SessionInterface $session)
{
    //Some code...
    $session->set('uoconnecte', $valeur);
    //Some code...
}

я установил переменную, а в другом контроллере

public function newAction(Request $request, SessionInterface $session){}

я получил адекватное значение, поскольку die(dump()) значения показывает это.Но когда приходит $em->flush(), я не знаю, почему он пытается вставить в другую таблицу (TypeUO), которая не упомянута в $em->persist(Place), и при этом получается ошибка:

Возникла исключительная ситуация при выполнении 'INSERT INTO type_u_o (codeTypeUO, libTypeUO, niveauTypeUO, typeuoliaison_id) VALUES (?,?,?,?)' С параметрами [null, null, null, null]:

SQLSTATE [23000]: Нарушение ограничения целостности: 1048 Столбец 'codeTypeUO' не может быть нулевым. "

Сущность, которую я пытаюсь сбросить (LieuRangement), связана со второй (UniteOrganisationnelle).

/**
 * @ORM\ManyToOne(targetEntity="AdminBundle\Entity\UniteOrganisationnelle", cascade={"persist", "remove"})
 * @ORM\JoinColumn(name="uo_id", referencedColumnName="id",nullable=true)
 */
private $uo;

Это часть кода контроллера

$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();

Но когда я удаляю переменные сеанса, это работает. Как я могу это решить?

Спасибо за вашепомощь

1 Ответ

0 голосов
/ 10 декабря 2018

Передавая переменную $uo1 через сеанс, EntityManager не знает об этом.С точки зрения Доктрины сущность больше не «управляется».Таким образом, EntityManager считает, что это новый объект (даже если у него установлено поле первичного ключа) и пытается вставить его.

Пожалуйста, посмотрите на https://www.doctrine -project.org / projects /доктрина-ОРМ / о / 2.6 / кулинарный / организации-в-session.html

...