Doctrine\ODM\MongoDB\Mapping\Driver\XmlDriver::addReferenceMapping PHP Method

addReferenceMapping() private method

private addReferenceMapping ( ClassMetadataInfo $class, $reference, $type )
$class Doctrine\ODM\MongoDB\Mapping\ClassMetadataInfo
    private function addReferenceMapping(ClassMetadataInfo $class, $reference, $type)
    {
        $cascade = array_keys((array) $reference->cascade);
        if (1 === count($cascade)) {
            $cascade = current($cascade) ?: next($cascade);
        }
        $attributes = $reference->attributes();
        $defaultStrategy = $type == 'one' ? ClassMetadataInfo::STORAGE_STRATEGY_SET : CollectionHelper::DEFAULT_STRATEGY;
        $mapping = array('cascade' => $cascade, 'orphanRemoval' => isset($attributes['orphan-removal']) ? 'true' === (string) $attributes['orphan-removal'] : false, 'type' => $type, 'reference' => true, 'simple' => isset($attributes['simple']) ? 'true' === (string) $attributes['simple'] : false, 'storeAs' => isset($attributes['store-as']) ? (string) $attributes['store-as'] : ClassMetadataInfo::REFERENCE_STORE_AS_DB_REF_WITH_DB, 'targetDocument' => isset($attributes['target-document']) ? (string) $attributes['target-document'] : null, 'collectionClass' => isset($attributes['collection-class']) ? (string) $attributes['collection-class'] : null, 'name' => (string) $attributes['field'], 'strategy' => isset($attributes['strategy']) ? (string) $attributes['strategy'] : $defaultStrategy, 'inversedBy' => isset($attributes['inversed-by']) ? (string) $attributes['inversed-by'] : null, 'mappedBy' => isset($attributes['mapped-by']) ? (string) $attributes['mapped-by'] : null, 'repositoryMethod' => isset($attributes['repository-method']) ? (string) $attributes['repository-method'] : null, 'limit' => isset($attributes['limit']) ? (int) $attributes['limit'] : null, 'skip' => isset($attributes['skip']) ? (int) $attributes['skip'] : null);
        if (isset($attributes['fieldName'])) {
            $mapping['fieldName'] = (string) $attributes['fieldName'];
        }
        if (isset($reference->{'discriminator-field'})) {
            $attr = $reference->{'discriminator-field'};
            $mapping['discriminatorField'] = (string) $attr['name'];
        }
        if (isset($reference->{'discriminator-map'})) {
            foreach ($reference->{'discriminator-map'}->{'discriminator-mapping'} as $discriminatorMapping) {
                $attr = $discriminatorMapping->attributes();
                $mapping['discriminatorMap'][(string) $attr['value']] = (string) $attr['class'];
            }
        }
        if (isset($reference->{'default-discriminator-value'})) {
            $mapping['defaultDiscriminatorValue'] = (string) $reference->{'default-discriminator-value'}['value'];
        }
        if (isset($reference->{'sort'})) {
            foreach ($reference->{'sort'}->{'sort'} as $sort) {
                $attr = $sort->attributes();
                $mapping['sort'][(string) $attr['field']] = isset($attr['order']) ? (string) $attr['order'] : 'asc';
            }
        }
        if (isset($reference->{'criteria'})) {
            foreach ($reference->{'criteria'}->{'criteria'} as $criteria) {
                $attr = $criteria->attributes();
                $mapping['criteria'][(string) $attr['field']] = (string) $attr['value'];
            }
        }
        if (isset($attributes['not-saved'])) {
            $mapping['notSaved'] = 'true' === (string) $attributes['not-saved'];
        }
        if (isset($attributes['also-load'])) {
            $mapping['alsoLoadFields'] = explode(',', $attributes['also-load']);
        }
        $this->addFieldMapping($class, $mapping);
    }