Создание лога - PullRequest
       26

Создание лога

0 голосов
/ 03 сентября 2018

Я хочу, чтобы ваша помощь разрешила небольшую проблему.

Я пытаюсь зарегистрировать объект журнала с событием onflush. У меня есть рабочее решение для создания, редактирования или удаления объекта.

Но теперь я хочу зарегистрировать идентификатор объекта, когда новый объект был вставлен. Событие onflush не управляет идентификатором, когда он был вызван Doctrine Lyfecylce. https://www.doctrine -project.org / проекты / Доктрина-ОРМ / ен / последний / ссылка / 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
}

Спасибо за ваше терпение и вашу помощь.

...