действие postPersist — сохранить другую сущность

[Редактирует]

  • На основе идти к ответ, я редактировал ProjectListener.php файл.

[НАСТРОЙКА]

[ПРОБЛЕМА]

Каждый раз Projet сущность сохраняется, за ней должны следовать некоторые дочерние энтиты.

У меня сейчас есть ProjetListener класс который обрабатывает prePersist() а также preUpdate() а также postPersist() События.

AppBundle / Слушатель / ProjetListener.php

class ProjetListener {
private $tokenStorage;

public function __construct(TokenStorage $tokenStorage) {
$this->tokenStorage=$tokenStorage;
}

public function prePersist(Projet $projet, LifecycleEventArgs $args) {
$projet->setUtilisateur($this->tokenStorage->getToken()->getUser())
->setCreation(new \DateTime())
->setModification(new \DateTime())
->setSupprime(false);
}

public function preUpdate(Projet $projet, PreUpdateEventArgs $args) {
$projet->setModification(new \DateTime());
}

public function postPersist(Projet $projet, LifecycleEventArgs $args) {
$tremie=new Tremie();
$tremie->setPosition(false)
->setForme(0)
->setTra(2000)
->setTr1(2000)
->setTr2(2000)
->setTre3(2000)
->setDecalTra(0)
->setDebordTr1(0)
->setDebordTr2(0)
->setReculMax(3500)
->setProjet($projet);
$em=$args->getEntityManager();
$em->persist($tremie);
}
}

Как только мой Projet сущность сохраняется, я хотел бы сохранить один Tremie сущность и установить Projet как это родитель
Как сейчас, postPersist() событие не сохраняется Tremie юридическое лицо.

Symfony успешно создал Projet сущность, но не создает Tremieсущность после.
Ошибка не возвращается.

Что следует добавить / отредактировать, чтобы сохранить Tremie как только Projet был сохранен и установлен Projetкак его родитель?

0

Решение

У вас есть доступ к менеджеру сущностей с помощью

$entityManager = $args->getEntityManager();

Вы могли бы, возможно, сделать: (Я никогда не пробовал это)

public function prePersist(Projet $projet, LifecycleEventArgs $args) {
$projet->setUtilisateur($this->tokenStorage->getToken()->getUser())
->setCreation(new \DateTime())
->setModification(new \DateTime())
->setSupprime(false);

$tremie->setPosition(false)
->setForme(0)
->setTra(2000)
->setTr1(2000)
->setTr2(2000)
->setTre3(2000)
->setDecalTra(0)
->setDebordTr1(0)
->setDebordTr2(0)
->setReculMax(3500)
->setProjet($project);
$args->getEntityManager()->persist($tremie);
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]