/** * @param ClassMetadata $classMetadata * @param array $mapping */ private function remapAssociation(ClassMetadata $classMetadata, array $mapping) { $newMapping = $this->resolveTargetDocuments[$mapping['targetDocument']]; $newMapping = array_replace_recursive($mapping, $newMapping); $newMapping['fieldName'] = $mapping['fieldName']; // clear reference case of duplicate exception unset($classMetadata->fieldMappings[$mapping['fieldName']]); unset($classMetadata->associationMappings[$mapping['fieldName']]); switch ($mapping['association']) { case ClassMetadata::REFERENCE_ONE: $classMetadata->mapOneReference($newMapping); break; case ClassMetadata::REFERENCE_MANY: $classMetadata->mapManyReference($newMapping); break; case ClassMetadata::EMBED_ONE: $classMetadata->mapOneEmbedded($newMapping); break; case ClassMetadata::EMBED_MANY: $classMetadata->mapManyEmbedded($newMapping); break; } }