0

我想在坚持之前检查我的水合实体的变化。

我尝试使用 find 将一个新实体放入带有 DB 值的 onSuccess(在 bindRequest 之后),但是这个对象具有水合值而不是 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
4

1 回答 1

1

首先,您可以使用prePersistevent来检查发生了什么变化。比 更合适onSuccess

还有更多本地方式来检查更改,使用UnitOfWorkobject

$unitOfWork = $entityManager->getUnitOfWork();
$unitOfWork->computeChangeSets();
$changes = $unitOfWork->getEntityChangeSet($yourEntity);
于 2012-08-02T13:04:48.250 回答