Сохранение другого объекта в событии жизненного цикла - PullRequest
0 голосов
/ 28 апреля 2020

Может ли другой объект в рамках данного обратного вызова жизненного цикла быть изменен и добавлен к тому же гриппу sh? Первоначально я не включил второй грипп sh () в обратный вызов, и он не был сохранен. Я пытаюсь добавить один, и он сохраняется, но инициирует несколько вызовов на EntityOne::preFlush(), и мне нужно было добавить флаг, чтобы игнорировать будущие вызовы, что кажется неправильным. Как правильно это сделать?

<?php
class MyService
{
    public function save()
    {
        //...
        $this->em->persist($entityTwo);
        $this->em->flush();      
    }
}

class EntityOne
{
    /**
    * @var EntityTwo
    */
    private $entityTwo;

    private $preFlushComplete=false;

    /**
    * @ORM\PreFlush
    */
    public function preFlush(PreFlushEventArgs $event)
    {
        if(!$this->preFlushComplete) {
            $this->preFlushComplete=true;
            $this->entityTwo->setTime(now());
            $event->getEntityManager()->persist($this->entityTwo);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...