Vì khi onFlush
được gọi là, tất cả các thay đổi đã được tính toán và bạn cần phải làm mới chúng nếu bạn thay đổi đối tượng của mình hoặc tạo một đối tượng mới.
$em = $this->getEntityManager();
$uow = $em->getUnitOfWork();
$logMetadata = $em->getClassMetadata('Your\LogClass');
...
$em->persist($log);
$uow->computeChangeSet($logMetadata, $log);
Đối với postPersist:
$em = $this->getEntityManager();
$uow = $em->getUnitOfWork();
$log = new Log;
...
$logMetadata = $em->getClassMetadata('Your\LogClass');
$className = $logMetadata->name;
$persister = $this->getEntityPersister($className);
$persister->addInsert($log);
$uow->computeChangeSet($classMeta, $logEntry);
$postInsertIds = $persister->executeInserts();
if ($postInsertIds) {
foreach ($postInsertIds as $id => $entity) {
$idField = $logMetadata->identifier[0];
$logMetadata->reflFields[$idField]->setValue($entity, $id);
$this->addToIdentityMap($entity);
}
}