. */ namespace Doctrine\ORM\Mapping; use Doctrine\ORM\Exceptions\MappingException; /** * Represents a one-to-many mapping. * * NOTE: One-to-many mappings can currently not be uni-directional (one -> many). * They must either be bidirectional (one <-> many) or unidirectional (many -> one). * In other words, the many-side MUST be the owning side and the one-side MUST be * the inverse side. * * @author Roman Borschel * @since 2.0 */ class OneToManyMapping extends AssociationMapping { /** The target foreign key columns that reference the sourceKeyColumns. */ /* NOTE: Currently not used because uni-directional one-many not supported atm. */ //protected $_targetForeignKeyColumns; /** The (typically primary) source key columns that are referenced by the targetForeignKeyColumns. */ /* NOTE: Currently not used because uni-directional one-many not supported atm. */ //protected $_sourceKeyColumns; /** This maps the target foreign key columns to the corresponding (primary) source key columns. */ /* NOTE: Currently not used because uni-directional one-many not supported atm. */ //protected $_targetForeignKeysToSourceKeys; /** This maps the (primary) source key columns to the corresponding target foreign key columns. */ /* NOTE: Currently not used because uni-directional one-many not supported atm. */ //protected $_sourceKeysToTargetForeignKeys; /** Whether to delete orphaned elements (removed from the collection) */ protected $_deleteOrphans = false; /** * Initializes a new OneToManyMapping. * * @param array $mapping The mapping information. */ public function __construct(array $mapping) { parent::__construct($mapping); } /** * Validates and completes the mapping. * * @param array $mapping The mapping to validate and complete. * @return array The validated and completed mapping. * @override */ protected function _validateAndCompleteMapping(array $mapping) { parent::_validateAndCompleteMapping($mapping); // one-side MUST be inverse (must have mappedBy) if ( ! isset($mapping['mappedBy'])) { throw MappingException::oneToManyRequiresMappedBy($mapping['fieldName']); } $this->_deleteOrphans = isset($mapping['deleteOrphans']) ? (bool)$mapping['deleteOrphans'] : false; } /** * Whether orphaned elements (removed from the collection) should be deleted. * * @return boolean TRUE if orphaned elements should be deleted, FALSE otherwise. */ public function shouldDeleteOrphans() { return $this->_deleteOrphans; } /** * Whether the association is one-to-many. * * @return boolean TRUE if the association is one-to-many, FALSE otherwise. * @override */ public function isOneToMany() { return true; } /** * * @param $entity * @override */ public function lazyLoadFor($entity, $entityManager) { } }