[MODM-24] Hydratation of extra fields Created: 06/Jul/10  Updated: 19/Jul/10  Resolved: 19/Jul/10

Status: Resolved
Project: Doctrine MongoDB ODM
Component/s: Hydration
Affects Version/s: None
Fix Version/s: 1.0.0ALPHA2

Type: Improvement Priority: Minor
Reporter: Anonymous Assignee: Jonathan H. Wage
Resolution: Fixed Votes: 0
Labels: None


I'm working on a project using MongoDB with ODM especially for the schemaless features.
So I have one collection with some default fields in my base class.
Every inherited class add fields but we're still in the same collection.

First, prior to save the document, I add the new mappings (imported from the inherited class) so they will be saved in the database. This part works fine.
The problem is that when the ODM hydrates the documents, it sticks to the $metadata->fieldMappings defined by the base class, and ignore the others.

I've made a quick patch for that, but it doesn't make any type cast, I didn't inspect the code deep enough to make it better.

In the Doctrine\ODM\MongoDB\Hydrator class (line 73) :

    public function hydrate(ClassMetadata $metadata, $document, $data)
        $values = array();

        // Patch
        foreach ($data as $field => $value)
          if(!array_key_exists($field, $metadata->fieldMappings))
            $document->$field = $value;
        // end Patch

        foreach ($metadata->fieldMappings as $mapping) {

Comment by Jonathan H. Wage [ 19/Jul/10 ]

This is fixed now. Make sure your classes inheritance mapping is setup properly too if you have other problems.

Generated at Thu Oct 08 16:13:44 EDT 2015 using JIRA 6.4.10#64025-sha1:5b8b74079161cd76a20ab66dda52747ee6701bd6.