Я хочу, чтобы ваша помощь разрешила небольшую проблему.
Я пытаюсь зарегистрировать объект журнала с событием 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
}
Спасибо за ваше терпение и вашу помощь.