是否可以比较当前“脏”版本(其某些属性已更改但尚未持久化的对象)和“原始”版本(仍在数据库中的数据)之间的实体对象的状态。
我的假设是我可以有一个“脏”对象,然后从数据库中提取一个新对象并比较两者。例如:
$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 绑定形式之后具有与 $entity 相同的数据)。为了比较,有没有办法在“脏”版本旁边获得新版本的 $entity ?我见过的解决方案都是在表单绑定发生之前提取所需的数据,但我宁愿没有这个限制。
更新:为了澄清,我不仅在寻找对实体属性的更改,而且还在寻找其相关的实体集合。