Esempio n. 1
0
 /**
  * {@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) {
             $this->relationToSourceKeyColumns[$joinColumn['name']] = $joinColumn['referencedColumnName'];
             $this->joinTableColumns[] = $joinColumn['name'];
         }
         foreach ($mapping['joinTable']['inverseJoinColumns'] as $inverseJoinColumn) {
             $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'];
     }
 }
Esempio n. 2
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']) || !$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'];
         }
     }
 }