From ad8a7821bd176e875b9ec1f756c32a15eed31fb3 Mon Sep 17 00:00:00 2001 From: "Jonathan H. Wage" Date: Fri, 6 Aug 2010 22:14:54 -0500 Subject: [PATCH] Fixing issue with custom id being sent with update everytime. --- lib/Doctrine/ODM/MongoDB/Hydrator.php | 2 ++ lib/Doctrine/ODM/MongoDB/UnitOfWork.php | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/Doctrine/ODM/MongoDB/Hydrator.php b/lib/Doctrine/ODM/MongoDB/Hydrator.php index 2d526127b0..6dd8502424 100644 --- a/lib/Doctrine/ODM/MongoDB/Hydrator.php +++ b/lib/Doctrine/ODM/MongoDB/Hydrator.php @@ -104,6 +104,8 @@ public function hydrate($document, &$data) // Set the document identifier if (isset($data['_id'])) { $metadata->setIdentifierValue($document, $data['_id']); + $data[$metadata->identifier] = $data['_id']; + unset($data['_id']); } return $document; } diff --git a/lib/Doctrine/ODM/MongoDB/UnitOfWork.php b/lib/Doctrine/ODM/MongoDB/UnitOfWork.php index 0a9603d656..f621a0aed1 100644 --- a/lib/Doctrine/ODM/MongoDB/UnitOfWork.php +++ b/lib/Doctrine/ODM/MongoDB/UnitOfWork.php @@ -385,8 +385,7 @@ public function computeChangeSet(Mapping\ClassMetadata $class, $document) $coll->setDirty( ! $coll->isEmpty()); $class->reflFields[$name]->setValue($document, $coll); $actualData[$name] = $coll; - } - if ($class->isCollectionValuedEmbed($name) && $actualData[$name] !== null + } elseif ($class->isCollectionValuedEmbed($name) && $actualData[$name] !== null && ! ($actualData[$name] instanceof Collection)) { // If $actualData[$name] is not a Collection then use an ArrayCollection. if ( ! $actualData[$name] instanceof Collection) {