0

永続化する前に、水和エンティティの変更を確認したいと思います。

検索を使用して 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

まず、prePersistイベントを使用して何が変更されたかを確認できます。よりも適していonSuccessます。

UnitOfWorkobjectを使用して、変更を確認するよりネイティブな方法もあります。

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