Example #1
0
 /**
  * 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);
     }
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * {@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'];
     }
 }
Example #6
0
 /**
  * {@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'];
         }
     }
 }
Example #8
0
 /**
  * {@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;
 }