我希望您的帮助解决一个小问题。
我尝试向'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
}
感谢您的耐心和帮助。