lib/Doctrine/ORM/Mapping/ClassMetadata.php
public function setPropertyOverride(Property $property) : void
    {
        $fieldName = $property->getName();

        if (! isset($this->declaredProperties[$fieldName])) {
            throw MappingException::invalidOverrideFieldName($this->className, $fieldName);
        }

        $originalProperty          = $this->getProperty($fieldName);
        $originalPropertyClassName = get_class($originalProperty);

        // If moving from transient to persistent, assume it's a new property
        if ($originalPropertyClassName === TransientMetadata::class) {
            unset($this->declaredProperties[$fieldName]);

            $this->addProperty($property);

            return;
        }

        // Do not allow to change property type
        if ($originalPropertyClassName !== get_class($property)) {
            throw MappingException::invalidOverridePropertyType($this->className, $fieldName);
        }

        // Do not allow to change version property
        if ($originalProperty instanceof VersionFieldMetadata) {
            throw MappingException::invalidOverrideVersionField($this->className, $fieldName);
        }

        unset($this->declaredProperties[$fieldName]);

        if ($property instanceof FieldMetadata) {
            // Unset defined fieldName prior to override
            unset($this->fieldNames[$originalProperty->getColumnName()]);

            // Revert what should not be allowed to change
            $property->setDeclaringClass($originalProperty->getDeclaringClass());
            $property->setPrimaryKey($originalProperty->isPrimaryKey());
        } elseif ($property instanceof AssociationMetadata) {
            // Unset all defined fieldNames prior to override
            if ($originalProperty instanceof ToOneAssociationMetadata && $originalProperty->isOwningSide()) {
                foreach ($originalProperty->getJoinColumns() as $joinColumn) {
                    unset($this->fieldNames[$joinColumn->getColumnName()]);
                }
            }

            // Override what it should be allowed to change
            if ($property->getInversedBy()) {
                $originalProperty->setInversedBy($property->getInversedBy());
            }

            if ($property->getFetchMode() !== $originalProperty->getFetchMode()) {
                $originalProperty->setFetchMode($property->getFetchMode());
            }

            if ($originalProperty instanceof ToOneAssociationMetadata && $property->getJoinColumns()) {
                $originalProperty->setJoinColumns($property->getJoinColumns());
            } elseif ($originalProperty instanceof ManyToManyAssociationMetadata && $property->getJoinTable()) {
                $originalProperty->setJoinTable($property->getJoinTable());
            }

            $property = $originalProperty;
        }

        $this->addProperty($property);
    }
public function setPropertyOverride(Property $property) : void
    {
        $fieldName = $property->getName();

        if (! isset($this->declaredProperties[$fieldName])) {
            throw MappingException::invalidOverrideFieldName($this->className, $fieldName);
        }

        $originalProperty          = $this->getProperty($fieldName);
        $originalPropertyClassName = get_class($originalProperty);

        // If moving from transient to persistent, assume it's a new property
        if ($originalPropertyClassName === TransientMetadata::class) {
            unset($this->declaredProperties[$fieldName]);

            $this->addProperty($property);

            return;
        }

        // Do not allow to change property type
        if ($originalPropertyClassName !== get_class($property)) {
            throw MappingException::invalidOverridePropertyType($this->className, $fieldName);
        }

        // Do not allow to change version property
        if ($originalProperty instanceof VersionFieldMetadata) {
            throw MappingException::invalidOverrideVersionField($this->className, $fieldName);
        }

        unset($this->declaredProperties[$fieldName]);

        if ($property instanceof FieldMetadata) {
            // Unset defined fieldName prior to override
            unset($this->fieldNames[$originalProperty->getColumnName()]);

            // Revert what should not be allowed to change
            $property->setDeclaringClass($originalProperty->getDeclaringClass());
            $property->setPrimaryKey($originalProperty->isPrimaryKey());
        } elseif ($property instanceof AssociationMetadata) {
            // Unset all defined fieldNames prior to override
            if ($originalProperty instanceof ToOneAssociationMetadata && $originalProperty->isOwningSide()) {
                foreach ($originalProperty->getJoinColumns() as $joinColumn) {
                    unset($this->fieldNames[$joinColumn->getColumnName()]);
                }
            }

            // Override what it should be allowed to change
            if ($property->getInversedBy()) {
                $originalProperty->setInversedBy($property->getInversedBy());
            }

            if ($property->getFetchMode() !== $originalProperty->getFetchMode()) {
                $originalProperty->setFetchMode($property->getFetchMode());
            }

            if ($originalProperty instanceof ToOneAssociationMetadata && $property->getJoinColumns()) {
                $originalProperty->setJoinColumns($property->getJoinColumns());
            } elseif ($originalProperty instanceof ManyToManyAssociationMetadata && $property->getJoinTable()) {
                $originalProperty->setJoinTable($property->getJoinTable());
            }

            $property = $originalProperty;
        }

        $this->addProperty($property);
    }
public function setPropertyOverride ( Property $ property ) : void { $ fieldName = $ property -> getName ( ) ; if ( ! isset ( $ this -> declaredProperties [ $ fieldName ] ) ) { throw MappingException :: invalidOverrideFieldName ( $ this -> className , $ fieldName ) ; } $ originalProperty = $ this -> getProperty ( $ fieldName ) ; $ originalPropertyClassName = get_class ( $ originalProperty ) ; // If moving from transient to persistent, assume it's a new property if ( $ originalPropertyClassName === TransientMetadata :: class ) { unset ( $ this -> declaredProperties [ $ fieldName ] ) ; $ this -> addProperty ( $ property ) ; return ; } // Do not allow to change property type if ( $ originalPropertyClassName !== get_class ( $ property ) ) { throw MappingException :: invalidOverridePropertyType ( $ this -> className , $ fieldName ) ; } // Do not allow to change version property if ( $ originalProperty instanceof VersionFieldMetadata ) { throw MappingException :: invalidOverrideVersionField ( $ this -> className , $ fieldName ) ; } unset ( $ this -> declaredProperties [ $ fieldName ] ) ; if ( $ property instanceof FieldMetadata ) { // Unset defined fieldName prior to override unset ( $ this -> fieldNames [ $ originalProperty -> getColumnName ( ) ] ) ; // Revert what should not be allowed to change $ property -> setDeclaringClass ( $ originalProperty -> getDeclaringClass ( ) ) ; $ property -> setPrimaryKey ( $ originalProperty -> isPrimaryKey ( ) ) ; } elseif ( $ property instanceof AssociationMetadata ) { // Unset all defined fieldNames prior to override if ( $ originalProperty instanceof ToOneAssociationMetadata && $ originalProperty -> isOwningSide ( ) ) { foreach ( $ originalProperty -> getJoinColumns ( ) as $ joinColumn ) { unset ( $ this -> fieldNames [ $ joinColumn -> getColumnName ( ) ] ) ; } } // Override what it should be allowed to change if ( $ property -> getInversedBy ( ) ) { $ originalProperty -> setInversedBy ( $ property -> getInversedBy ( ) ) ; } if ( $ property -> getFetchMode ( ) !== $ originalProperty -> getFetchMode ( ) ) { $ originalProperty -> setFetchMode ( $ property -> getFetchMode ( ) ) ; } if ( $ originalProperty instanceof ToOneAssociationMetadata && $ property -> getJoinColumns ( ) ) { $ originalProperty -> setJoinColumns ( $ property -> getJoinColumns ( ) ) ; } elseif ( $ originalProperty instanceof ManyToManyAssociationMetadata && $ property -> getJoinTable ( ) ) { $ originalProperty -> setJoinTable ( $ property -> getJoinTable ( ) ) ; } $ property = $ originalProperty ; } $ this -> addProperty ( $ property ) ; }
Sets the override property mapping for an entity relationship.

@throws RuntimeException
@throws MappingException
@throws CacheException
Sets the override property mapping for an entity relationship .