日志实体创建

时间:2018-09-03 18:39:36

标签: symfony doctrine lifecycle

我希望您的帮助解决一个小问题。

我尝试向'onflush'事件注册日志实体。 我有一个用于创建,编辑或删除实体的可行解决方案。

但是现在,我想在插入新对象时注册id实体。 当Doctrine Lyfecylce召唤他时,“ onflush”事件不会管理id。 https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#onflush

因此,我尝试使用“ postflush”事件。 我有id对象,但是我不知道该如何保存。

这是位代码:

public function getSubscribedEvents()
    {
        return array(
            Events::onFlush,
            Events::postFlush,
        );
    }

public function postFlush(PostFlushEventArgs $args)
    {
        $this->log->setObjectId($this->element->getId());

        dump($this->element->getId()); // return element ID
        dump($this->log->getObjectId()); // return log attribute
// no data has been saved
    }

 public function onFlush(OnFlushEventArgs $args)
    {
        $em = $args->getEntityManager();
        $uow = $em->getUnitOfWork();

        if (sizeof($uow->getScheduledEntityInsertions()) > 0)
            $this->logEntityChangeSets($em, $uow, Log::STATUS_INSERT, $uow->getScheduledEntityInsertions());

        $uow->computeChangeSets();
    }

    public function logEntityChangeSets(EntityManager $em, UnitOfWork $uow, $status, Array $array)
{
// code for create Log entity and fill it
}

感谢您的耐心和帮助。

0 个答案:

没有答案