From fff133414d44b404b0601e94148e92a0c42d37c0 Mon Sep 17 00:00:00 2001 From: Fabien Potencier Date: Wed, 10 Mar 2010 22:29:45 +0100 Subject: [PATCH] [DoctrineBundle] fixed the overridding of an Entity --- .../DependencyInjection/DoctrineExtension.php | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/src/Symfony/Framework/DoctrineBundle/DependencyInjection/DoctrineExtension.php b/src/Symfony/Framework/DoctrineBundle/DependencyInjection/DoctrineExtension.php index f53560582e..8d5a9cdf28 100644 --- a/src/Symfony/Framework/DoctrineBundle/DependencyInjection/DoctrineExtension.php +++ b/src/Symfony/Framework/DoctrineBundle/DependencyInjection/DoctrineExtension.php @@ -201,7 +201,7 @@ class DoctrineExtension extends LoaderExtension $bundleEntityMappings = array(); $bundleDirs = $this->bundleDirs; $aliasMap = array(); - foreach ($this->bundles as $className) + foreach (array_reverse($this->bundles) as $className) { $tmp = dirname(str_replace('\\', '/', $className)); $namespace = str_replace('/', '\\', dirname($tmp)); @@ -209,27 +209,29 @@ class DoctrineExtension extends LoaderExtension if (isset($bundleDirs[$namespace])) { - $type = false; - if (is_dir($dir = $bundleDirs[$namespace].'/'.$class.'/Resources/config/doctrine/metadata')) - { - $type = $this->detectMappingType($dir); - } + continue; + } - if (is_dir($dir = $bundleDirs[$namespace].'/'.$class.'/Entities')) - { - $type = 'annotation'; + $type = false; + if (is_dir($dir = $bundleDirs[$namespace].'/'.$class.'/Resources/config/doctrine/metadata')) + { + $type = $this->detectMappingType($dir); + } - $aliasMap[$class] = $namespace.'\\'.$class.'\\Entities'; - } + if (is_dir($dir = $bundleDirs[$namespace].'/'.$class.'/Entities')) + { + $type = 'annotation'; - if (false !== $type) - { - $mappingDriverDef->addMethodCall('addDriver', array( - new Reference(sprintf('doctrine.orm.metadata_driver.%s', $type)), - $namespace.'\\'.$class.'\\Entities' - ) - ); - } + $aliasMap[$class] = $namespace.'\\'.$class.'\\Entities'; + } + + if (false !== $type) + { + $mappingDriverDef->addMethodCall('addDriver', array( + new Reference(sprintf('doctrine.orm.metadata_driver.%s', $type)), + $namespace.'\\'.$class.'\\Entities' + ) + ); } } $ormConfigDef->addMethodCall('setEntityNamespaces', array($aliasMap));