/** * {@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']; } }
/** * 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']; } } }