/** * Validates and completes the mapping. * * @param array $mapping * @override */ protected function _validateAndCompleteMapping(array $mapping) { parent::_validateAndCompleteMapping($mapping); if ($this->isOwningSide()) { // owning side MUST have a join table if (!isset($mapping['joinTable'])) { throw MappingException::joinTableRequired($mapping['fieldName']); } // owning side MUST specify joinColumns if (!isset($mapping['joinTable']['joinColumns'])) { throw MappingException::invalidMapping($this->_sourceFieldName); } foreach ($mapping['joinTable']['joinColumns'] as $joinColumn) { $this->sourceToRelationKeyColumns[$joinColumn['referencedColumnName']] = $joinColumn['name']; $this->joinTableColumns[] = $joinColumn['name']; } $this->sourceKeyColumns = array_keys($this->sourceToRelationKeyColumns); // owning side MUST specify inverseJoinColumns if (!isset($mapping['joinTable']['inverseJoinColumns'])) { throw MappingException::invalidMapping($this->_sourceFieldName); } foreach ($mapping['joinTable']['inverseJoinColumns'] as $inverseJoinColumn) { $this->targetToRelationKeyColumns[$inverseJoinColumn['referencedColumnName']] = $inverseJoinColumn['name']; $this->joinTableColumns[] = $inverseJoinColumn['name']; } $this->targetKeyColumns = array_keys($this->targetToRelationKeyColumns); } }
/** * 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; }
/** * {@inheritdoc} * * @param array $mapping The mapping to validate & complete. * @return array The validated & completed mapping. * @override */ protected function _validateAndCompleteMapping(array $mapping) { parent::_validateAndCompleteMapping($mapping); if ($this->isOwningSide()) { if (!isset($mapping['joinColumns'])) { throw MappingException::invalidMapping($this->_sourceFieldName); } $this->joinColumns = $mapping['joinColumns']; foreach ($mapping['joinColumns'] as $joinColumn) { $this->sourceToTargetKeyColumns[$joinColumn['name']] = $joinColumn['referencedColumnName']; } $this->targetToSourceKeyColumns = array_flip($this->sourceToTargetKeyColumns); } $this->deleteOrphans = isset($mapping['deleteOrphans']) ? (bool) $mapping['deleteOrphans'] : false; return $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); // OneToMany-side MUST be inverse (must have mappedBy) if (!isset($mapping['mappedBy'])) { throw MappingException::oneToManyRequiresMappedBy($mapping['fieldName']); } //TODO: if orphanRemoval, cascade=remove is implicit! $this->orphanRemoval = isset($mapping['orphanRemoval']) ? (bool) $mapping['orphanRemoval'] : false; if (isset($mapping['orderBy'])) { if (!is_array($mapping['orderBy'])) { throw new \InvalidArgumentException("'orderBy' is expected to be an array, not " . gettype($mapping['orderBy'])); } $this->orderBy = $mapping['orderBy']; } }
/** * {@inheritdoc} */ protected function _validateAndCompleteMapping(array $mapping) { parent::_validateAndCompleteMapping($mapping); if ($this->isOwningSide) { // owning side MUST have a join table if (!isset($mapping['joinTable']) || !$mapping['joinTable']) { // Apply default join table $sourceShortName = substr($this->sourceEntityName, strrpos($this->sourceEntityName, '\\') + 1); $targetShortName = substr($this->targetEntityName, strrpos($this->targetEntityName, '\\') + 1); $mapping['joinTable'] = array('name' => $sourceShortName . '_' . $targetShortName, 'joinColumns' => array(array('name' => $sourceShortName . '_id', 'referencedColumnName' => 'id', 'onDelete' => 'CASCADE')), 'inverseJoinColumns' => array(array('name' => $targetShortName . '_id', 'referencedColumnName' => 'id', 'onDelete' => 'CASCADE'))); $this->joinTable = $mapping['joinTable']; } else { if (!isset($mapping['joinTable']['joinColumns'])) { throw MappingException::missingRequiredOption($this->sourceFieldName, 'joinColumns', 'Did you think of case sensitivity / plural s?'); } else { if (!isset($mapping['joinTable']['inverseJoinColumns'])) { throw MappingException::missingRequiredOption($this->sourceFieldName, 'inverseJoinColumns', 'Did you think of case sensitivity / plural s?'); } } } foreach ($mapping['joinTable']['joinColumns'] as $joinColumn) { if (isset($joinColumn['onDelete']) && strtolower($joinColumn['onDelete']) == 'cascade') { $this->isOnDeleteCascade = true; } $this->relationToSourceKeyColumns[$joinColumn['name']] = $joinColumn['referencedColumnName']; $this->joinTableColumns[] = $joinColumn['name']; } foreach ($mapping['joinTable']['inverseJoinColumns'] as $inverseJoinColumn) { if (isset($inverseJoinColumn['onDelete']) && strtolower($inverseJoinColumn['onDelete']) == 'cascade') { $this->isOnDeleteCascade = true; } $this->relationToTargetKeyColumns[$inverseJoinColumn['name']] = $inverseJoinColumn['referencedColumnName']; $this->joinTableColumns[] = $inverseJoinColumn['name']; } } if (isset($mapping['orderBy'])) { if (!is_array($mapping['orderBy'])) { throw new \InvalidArgumentException("'orderBy' is expected to be an array, not " . gettype($mapping['orderBy'])); } $this->orderBy = $mapping['orderBy']; } }
/** * {@inheritdoc} * * @param array $mapping The mapping to validate & complete. * @return array The validated & completed mapping. * @override */ protected function _validateAndCompleteMapping(array $mapping) { parent::_validateAndCompleteMapping($mapping); if (isset($mapping['joinColumns']) && $mapping['joinColumns']) { $this->isOwningSide = true; } if ($this->isOwningSide) { if (!isset($mapping['joinColumns']) || !$mapping['joinColumns']) { // Apply default join column $mapping['joinColumns'] = array(array('name' => $this->sourceFieldName . '_id', 'referencedColumnName' => 'id')); } foreach ($mapping['joinColumns'] as $joinColumn) { $this->sourceToTargetKeyColumns[$joinColumn['name']] = $joinColumn['referencedColumnName']; $this->joinColumnFieldNames[$joinColumn['name']] = isset($joinColumn['fieldName']) ? $joinColumn['fieldName'] : $joinColumn['name']; } $this->joinColumns = $mapping['joinColumns']; $this->targetToSourceKeyColumns = array_flip($this->sourceToTargetKeyColumns); } //TODO: if orphanRemoval, cascade=remove is implicit! $this->orphanRemoval = isset($mapping['orphanRemoval']) ? (bool) $mapping['orphanRemoval'] : false; return $mapping; }
/** * Validates and completes the mapping. * * @param array $mapping * @override */ protected function _validateAndCompleteMapping(array $mapping) { parent::_validateAndCompleteMapping($mapping); if ($this->isOwningSide) { // owning side MUST have a join table if (!isset($mapping['joinTable']) || !$mapping['joinTable']) { // Apply default join table $sourceShortName = substr($this->sourceEntityName, strrpos($this->sourceEntityName, '\\') + 1); $targetShortName = substr($this->targetEntityName, strrpos($this->targetEntityName, '\\') + 1); $mapping['joinTable'] = array('name' => $sourceShortName . '_' . $targetShortName, 'joinColumns' => array(array('name' => $sourceShortName . '_id', 'referencedColumnName' => 'id')), 'inverseJoinColumns' => array(array('name' => $targetShortName . '_id', 'referencedColumnName' => 'id'))); $this->joinTable = $mapping['joinTable']; } else { if (!isset($mapping['joinTable']['joinColumns'])) { throw MappingException::missingRequiredOption($this->sourceFieldName, 'joinColumns', 'Did you think of case sensitivity / plural s?'); } else { if (!isset($mapping['joinTable']['inverseJoinColumns'])) { throw MappingException::missingRequiredOption($this->sourceFieldName, 'inverseJoinColumns', 'Did you think of case sensitivity / plural s?'); } } } foreach ($mapping['joinTable']['joinColumns'] as &$joinColumn) { if ($joinColumn['name'][0] == '`') { $joinColumn['name'] = trim($joinColumn['name'], '`'); $joinColumn['quoted'] = true; } $this->relationToSourceKeyColumns[$joinColumn['name']] = $joinColumn['referencedColumnName']; $this->joinTableColumns[] = $joinColumn['name']; } foreach ($mapping['joinTable']['inverseJoinColumns'] as &$inverseJoinColumn) { if ($inverseJoinColumn['name'][0] == '`') { $inverseJoinColumn['name'] = trim($inverseJoinColumn['name'], '`'); $inverseJoinColumn['quoted'] = true; } $this->relationToTargetKeyColumns[$inverseJoinColumn['name']] = $inverseJoinColumn['referencedColumnName']; $this->joinTableColumns[] = $inverseJoinColumn['name']; } } }
/** * {@inheritdoc} * * @param array $mapping The mapping to validate & complete. * @return array The validated & completed mapping. * @override */ protected function _validateAndCompleteMapping(array $mapping) { parent::_validateAndCompleteMapping($mapping); if (isset($mapping['joinColumns']) && $mapping['joinColumns']) { $this->isOwningSide = true; } if ($this->isOwningSide) { if (!isset($mapping['joinColumns']) || !$mapping['joinColumns']) { // Apply default join column $mapping['joinColumns'] = array(array('name' => $this->sourceFieldName . '_id', 'referencedColumnName' => 'id')); } foreach ($mapping['joinColumns'] as &$joinColumn) { if ($joinColumn['name'][0] == '`') { $joinColumn['name'] = trim($joinColumn['name'], '`'); $joinColumn['quoted'] = true; } $this->sourceToTargetKeyColumns[$joinColumn['name']] = $joinColumn['referencedColumnName']; $this->joinColumnFieldNames[$joinColumn['name']] = isset($joinColumn['fieldName']) ? $joinColumn['fieldName'] : $joinColumn['name']; } $this->joinColumns = $mapping['joinColumns']; $this->targetToSourceKeyColumns = array_flip($this->sourceToTargetKeyColumns); } $this->isOptional = isset($mapping['optional']) ? (bool) $mapping['optional'] : true; $this->orphanRemoval = isset($mapping['orphanRemoval']) ? (bool) $mapping['orphanRemoval'] : false; /*if ($this->isOptional) { $this->fetchMode = self::FETCH_EAGER; }*/ return $mapping; }