postPersist action - 坚持另一个实体

时间:2018-01-31 16:05:37

标签: php symfony entitylisteners

[编辑]

  • 根据goto回答,我编辑了 { "users": [ { "localId": "11", "passwordHash": "", "email": "test@icloud.com", "createdAt": "1515666546293", "displayName": "test name" } ] } 文件。

[设置]

[问题]

每次Projet实体持续存在时,都应该有一些儿童参与者。

我目前有一个Projet类来处理ProjetListenerprePersist()以及preUpdate()个事件。

的appbundle /监听器/ ProjetListener.php

postPersist()

只要我的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()实体。

Symfony成功创建了Tremie实体,但之后没有创建Projet实体。
没有返回错误。

Tremie被保留后,应该添加/修改哪些内容Tremie,并将Projet设置为其父级?

1 个答案:

答案 0 :(得分:1)

您可以使用

访问实体管理器
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);
}

你可能会这样做:(我从未尝试过)

a = [[1,2],[1,2,3],[1,2,3,4]]