我想在持久化之前检查我的水合实体的变化。
我试着用find将一个新的实体(在bindRequest之后)与DB值一起放入onSuccess,但这个对象具有水合值,而不是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();
}
$tache_old的Var_dump给了我水分值。
编辑:
几个小时后我找到了解决办法。
要解决这个问题,您必须在控制器中创建实体的克隆,并通过formHandler参数发送它。
在onSuccess功能中,您可以这样访问它:
$this->entityCloned
首先,您可以使用prePersist
事件来检查发生了什么变化。它比onSuccess
更适合。
还有一种更原生的检查更改的方法,使用UnitOfWork
对象:
$unitOfWork = $entityManager->getUnitOfWork();
$unitOfWork->computeChangeSets();
$changes = $unitOfWork->getEntityChangeSet($yourEntity);