private function getReferenceMapping() : array
    {
        $this->requiresCurrentField();
        assert($this->currentField !== null);

        try {
            return $this->class->getFieldMapping($this->currentField);
        } catch (MappingException $e) {
            if (empty($this->class->discriminatorMap)) {
                throw $e;
            }
            $mapping = null;
            $foundIn = null;
            foreach ($this->class->discriminatorMap as $child) {
                $childClass = $this->dm->getClassMetadata($child);
                if (! $childClass->hasAssociation($this->currentField)) {
                    continue;
                }

                if ($foundIn !== null && $mapping !== null && $mapping !== $childClass->getFieldMapping($this->currentField)) {
                    throw MappingException::referenceFieldConflict($this->currentField, $foundIn->name, $childClass->name);
                }
                $mapping = $childClass->getFieldMapping($this->currentField);
                $foundIn = $childClass;
            }
            if ($mapping === null) {
                throw MappingException::mappingNotFoundInClassNorDescendants($this->class->name, $this->currentField);
            }

            return $mapping;
        }
    }
private function getReferenceMapping() : array
    {
        $this->requiresCurrentField();
        assert($this->currentField !== null);

        try {
            return $this->class->getFieldMapping($this->currentField);
        } catch (MappingException $e) {
            if (empty($this->class->discriminatorMap)) {
                throw $e;
            }
            $mapping = null;
            $foundIn = null;
            foreach ($this->class->discriminatorMap as $child) {
                $childClass = $this->dm->getClassMetadata($child);
                if (! $childClass->hasAssociation($this->currentField)) {
                    continue;
                }

                if ($foundIn !== null && $mapping !== null && $mapping !== $childClass->getFieldMapping($this->currentField)) {
                    throw MappingException::referenceFieldConflict($this->currentField, $foundIn->name, $childClass->name);
                }
                $mapping = $childClass->getFieldMapping($this->currentField);
                $foundIn = $childClass;
            }
            if ($mapping === null) {
                throw MappingException::mappingNotFoundInClassNorDescendants($this->class->name, $this->currentField);
            }

            return $mapping;
        }
    }
private function getReferenceMapping ( ) : array { $ this -> requiresCurrentField ( ) ; assert ( $ this -> currentField !== null ) ; try { return $ this -> class -> getFieldMapping ( $ this -> currentField ) ; } catch ( MappingException $ e ) { if ( empty ( $ this -> class -> discriminatorMap ) ) { throw $ e ; } $ mapping = null ; $ foundIn = null ; foreach ( $ this -> class -> discriminatorMap as $ child ) { $ childClass = $ this -> dm -> getClassMetadata ( $ child ) ; if ( ! $ childClass -> hasAssociation ( $ this -> currentField ) ) { continue ; } if ( $ foundIn !== null && $ mapping !== null && $ mapping !== $ childClass -> getFieldMapping ( $ this -> currentField ) ) { throw MappingException :: referenceFieldConflict ( $ this -> currentField , $ foundIn -> name , $ childClass -> name ) ; } $ mapping = $ childClass -> getFieldMapping ( $ this -> currentField ) ; $ foundIn = $ childClass ; } if ( $ mapping === null ) { throw MappingException :: mappingNotFoundInClassNorDescendants ( $ this -> class -> name , $ this -> currentField ) ; } return $ mapping ; } }
Gets reference mapping for current field from current class or its descendants.

@throws MappingException
Gets reference mapping for current field from current class or its descendants .