Skip to content

Commit

Permalink
Prefix name on not-root inheritance (single_table)
Browse files Browse the repository at this point in the history
Fix #6
  • Loading branch information
Mathias Strasser committed Jul 9, 2015
1 parent dec80f9 commit 777258b
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions src/Subscriber/PrefixSubscriber.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,17 +49,12 @@ public function loadClassMetadata(LoadClassMetadataEventArgs $args)
/** @var \Doctrine\ORM\Mapping\ClassMetadata $classMetadata */
$classMetadata = $args->getClassMetadata();

// Do not re-apply the prefix in an inheritance hierarchy.
if ($classMetadata->isInheritanceTypeSingleTable() && !$classMetadata->isRootEntity()) {
return;
}

$entity = strtr($classMetadata->namespace, array('\\' => '\\\\'));
$filter = (bool)(empty($this->bundles)
|| new \RegexIterator(new \ArrayIterator($this->bundles), '/' . $entity . '/i'));
if ($filter) {
// Generate Table
$classMetadata->setPrimaryTable(array('name' => $this->prefix . $classMetadata->getTableName()));
$classMetadata->setPrimaryTable(array('name' => $this->addPrefix($classMetadata->getTableName())));

foreach ($classMetadata->getAssociationMappings() as $fieldName => $mapping) {
if ($mapping['type'] == \Doctrine\ORM\Mapping\ClassMetadataInfo::MANY_TO_MANY
Expand All @@ -68,7 +63,7 @@ public function loadClassMetadata(LoadClassMetadataEventArgs $args)
$mappedTableName
= $classMetadata->associationMappings[$fieldName]['joinTable']['name'];
$classMetadata->associationMappings[$fieldName]['joinTable']['name']
= $this->prefix . $mappedTableName;
= $this->addPrefix($mappedTableName);
}
}

Expand All @@ -78,7 +73,7 @@ public function loadClassMetadata(LoadClassMetadataEventArgs $args)
if ($platform instanceof \Doctrine\DBAL\Platforms\PostgreSqlPlatform) {
if ($classMetadata->isIdGeneratorSequence()) {
$newDefinition = $classMetadata->sequenceGeneratorDefinition;
$newDefinition['sequenceName'] = $this->prefix . $newDefinition['sequenceName'];
$newDefinition['sequenceName'] = $this->addPrefix($newDefinition['sequenceName']);

$classMetadata->setSequenceGeneratorDefinition($newDefinition);
if (isset($classMetadata->idGenerator)) {
Expand Down Expand Up @@ -119,4 +114,13 @@ public function loadClassMetadata(LoadClassMetadataEventArgs $args)
}
}
}

private function addPrefix($name)
{
if (strpos($name, $this->prefix) === 0) {
return $name;
}

return $this->prefix . $name;
}
}

0 comments on commit 777258b

Please sign in to comment.