Skip to content

Commit

Permalink
Merge pull request doctrine#322 from rande/patch-1
Browse files Browse the repository at this point in the history
In some weird situation the SimpleXmlIterator used to iterate on the ``$...
  • Loading branch information
beberlei committed Apr 16, 2012
2 parents 193ac07 + 5005bbe commit 4b09712
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion lib/Doctrine/ORM/Mapping/Driver/XmlDriver.php
Expand Up @@ -166,6 +166,9 @@ public function loadMetadataForClass($className, ClassMetadataInfo $metadata)
$metadata->table['options'] = $this->_parseOptions($xmlRoot->options->children());
}

// The mapping assignement is done in 2 times as a bug might occurs on some php/xml lib versions
// The internal SimpleXmlIterator get resetted, to this generate a duplicate field exception
$mappings = array();
// Evaluate <field ...> mappings
if (isset($xmlRoot->field)) {
foreach ($xmlRoot->field as $fieldMapping) {
Expand Down Expand Up @@ -213,10 +216,14 @@ public function loadMetadataForClass($className, ClassMetadataInfo $metadata)
$mapping['options'] = $this->_parseOptions($fieldMapping->options->children());
}

$metadata->mapField($mapping);
$mappings[] = $mapping;
}
}

foreach ($mappings as $mapping) {
$metadata->mapField($mapping);
}

// Evaluate <id ...> mappings
$associationIds = array();
foreach ($xmlRoot->id as $idElement) {
Expand Down

0 comments on commit 4b09712

Please sign in to comment.