我想在坚持之前检查我的水合实体的变化。
我尝试使用find将一个新实体放入onSuccess(在bindRequest之后)和DB值,但是这个对象有水合值而不是DB值!
这是我尝试过的:
public function onSuccess(TachesDetails $detail) {
$tache_new = $detail->getTache();
$tache_old = $this->em->getRepository('NomDuBundle:Taches')->find($tache_new->getId());
var_dump($tache_old);
// ...
$this->em->persist($detail);
$this->em->persist($detail->getTache());
$this->em->flush();
}
编辑:
我在下班后找到了解决方案。
要解决此问题,您必须在控制器中创建实体的克隆,并通过formHandler参数发送它。
在onSuccess函数中,您可以像这样访问它:
$this->entityCloned
答案 0 :(得分:1)
首先,您可以使用prePersist
event来检查更改的内容。它比onSuccess
更合适。
$unitOfWork = $entityManager->getUnitOfWork();
$unitOfWork->computeChangeSets();
$changes = $unitOfWork->getEntityChangeSet($yourEntity);