示例#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);
     }
 }