Reputation: 2827
[EDITS]
ProjectListener.php
file.[SETTINGS]
Projet
entity[PROBLEM]
Each time a Projet
entity is persisted, it should be followed by some child entites.
I currently have a ProjetListener
class which handle prePersist()
and preUpdate()
and postPersist()
events.
AppBundle/Listener/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);
}
}
As soon as my Projet
entity is persisted, I would like to persist one Tremie
entity, and set Projet
as it's parent.
As it's now, the postPersist()
event doesn't persist a Tremie
entity.
Symfony successfully create a Projet
entity, but doesn't create a Tremie
entity afterward.
There is no error returned.
What should be added/edited to persist Tremie
as soon as Projet
was persisted, and set Projet
as his parent?
Upvotes: 0
Views: 1124
Reputation: 8164
You have access to the entity manager using
$entityManager = $args->getEntityManager();
You could maybe do: (I never tried it)
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);
}
Upvotes: 1