現在の「ダーティ」バージョン (一部のプロパティが変更され、まだ永続化されていないオブジェクト) と「元の」バージョン (データがまだデータベース内にあるオブジェクト) の間でエンティティ オブジェクトの状態を比較することは可能ですか?
私の仮定は、「ダーティな」オブジェクトを作成し、DB から新しいオブジェクトを取得して 2 つを比較できるというものでした。例えば:
$entity = $em->getRepository('MyContentBundle:DynamicContent')->find($id);
$editForm = $this->createContentForm($entity);
$editForm->bind($request);
if ($editForm->isValid()) {
$db_entity = $em->getRepository('MyContentBundle:DynamicContent')->find($id);
// compare $entity to $db_entity
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('content_edit', array('id' => $id)));
}
しかし、私の経験では、$entity と $db_entity は常に同じオブジェクトです (そして、フォーム $request bind の後に $entity と同じデータを持ちます)。比較のために、「ダーティ」バージョンと一緒に $entity の新しいバージョンを取得する方法はありますか? 私が見たソリューションはすべて、フォームのバインドが発生する前に必要なデータを取得しますが、その制限はありません。
更新:明確にするために、エンティティのプロパティの変更だけでなく、関連するエンティティのコレクションも探しています。