簡體   English   中英

后堅持行動-堅持另一個實體

[英]postPersist action - persist another entity

[EDITS]

  • 基於goto答案,我編輯了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為他的父母?

您可以使用訪問實體管理器

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM