[Редактирует]
ProjectListener.php
файл.[НАСТРОЙКА]
Projet
юридическое лицо[ПРОБЛЕМА]
Каждый раз 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
как его родитель?
У вас есть доступ к менеджеру сущностей с помощью
$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);
}
Других решений пока нет …