Ist es möglich, den Status eines Entitätsobjekts zwischen der aktuellen "schmutzigen" Version zu vergleichen (ein Objekt, das einige seiner Eigenschaften verändert hat, noch nicht beibehalten) und die "ursprüngliche" Version (die Daten noch in der Datenbank).Doctrine2-Entitäten - Ist es möglich, ein "schmutziges" Objekt mit einem aus der Datenbank zu vergleichen?
Meine Annahme war, dass ich ein "schmutziges" Objekt haben könnte, dann ziehe ein neues aus der DB und vergleiche die beiden. Zum Beispiel:
$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)));
}
Aber in meiner Erfahrung $ Einheit und $ db_entity ist immer das gleiche Objekt (und hat die gleichen Daten wie $ Einheit, nach der Form $ Anfrage binden). Gibt es eine Möglichkeit, eine neue Version der Entität $ neben der "schmutzigen" Version zum Vergleich zu bekommen? Die Lösungen, die ich gesehen habe, ziehen die benötigten Daten, bevor die Formbindung stattfindet, aber ich möchte diese Einschränkung nicht haben.
Update: Um zu klären, ich suche nicht nur nach Änderungen an den Eigenschaften der Entitäten, sondern auch die damit verbundenen Sammlungen von Entitäten.
Ich frage speziell so Ican eine bessere Lösung zu Entfernen von Elementen aus einer Symfony2 Form Sammlung.[Die aktuelle Lösung] (http://symfony.com/doc/2.0/cookbook/form/form_collections.html#templates-modifications) wo Sie die Werte vor der Bindung ziehen, scheint zu einschränkend und nicht förderlich, um eine nette Funktion zu machen handle es. –
Dies ist ein Duplikat von http://stackoverflow.com/questions/9057558/any-built-in-way-to-get-all-the-changed-fields-in-doctrine-2/9057705#9057705 – Ocramius
ich sollte Erweitern Sie den Umfang meiner Frage, da ich nicht nur nach Änderungen an der Entität selbst suche, sondern auch nach den zugehörigen Sammlungen innerhalb der Entität. Mit UnitOfWork hilft nur mit ersterem. Allerdings sieht es aus wie Alex 'Vorschlag, $ em-> clear() zu verwenden, bevor man einen anderen find() findet, um die "frische" Entität zu erhalten, nach der ich suche. –