浏览代码

[DoctrineBundle] changed doctrine.orm.entity_managers parameter to store the names and the ids

Fabien Potencier 14 年之前
父节点
当前提交
43e38c3ba4

+ 8 - 0
UPDATE.md

@@ -6,6 +6,14 @@ one. It only discusses changes that need to be done when using the "public"
 API of the framework. If you "hack" the core, you should probably follow the
 timeline closely anyway.
 
+beta1 to beta2
+--------------
+
+* The `doctrine.orm.entity_managers` is now hash of entity manager names/ids pairs:
+
+    Before: array('default', 'foo')
+    After:  array('default' => 'doctrine.orm.default_entity_manager', 'foo' => 'doctrine.orm.foo_entity_manager'))
+
 PR12 to beta1
 -------------
 

+ 2 - 4
src/Symfony/Bundle/DoctrineBundle/CacheWarmer/ProxyCacheWarmer.php

@@ -64,10 +64,8 @@ class ProxyCacheWarmer implements CacheWarmerInterface
             return;
         }
 
-        $entityManagers = $this->container->getParameter('doctrine.orm.entity_managers');
-        foreach ($entityManagers as $entityManagerName) {
-            $em = $this->container->get(sprintf('doctrine.orm.%s_entity_manager', $entityManagerName));
-            /* @var $em Doctrine\ORM\EntityManager */
+        foreach ($this->container->getParameter('doctrine.orm.entity_managers') as $id) {
+            $em = $this->container->get($id);
             $classes = $em->getMetadataFactory()->getAllMetadata();
             $em->getProxyFactory()->generateProxyClasses($classes);
         }

+ 3 - 4
src/Symfony/Bundle/DoctrineBundle/Command/DoctrineCommand.php

@@ -111,12 +111,11 @@ abstract class DoctrineCommand extends Command
 
     protected function getDoctrineEntityManagers()
     {
-        $entityManagerNames = $this->container->getParameter('doctrine.orm.entity_managers');
         $entityManagers = array();
-        foreach ($entityManagerNames as $entityManagerName) {
-            $em = $this->container->get(sprintf('doctrine.orm.%s_entity_manager', $entityManagerName));
-            $entityManagers[] = $em;
+        foreach ($this->container->getParameter('doctrine.orm.entity_managers') as $id) {
+            $entityManagers[] = $this->container->get($id);
         }
+
         return $entityManagers;
     }
 

+ 7 - 2
src/Symfony/Bundle/DoctrineBundle/DependencyInjection/DoctrineExtension.php

@@ -142,10 +142,15 @@ class DoctrineExtension extends AbstractDoctrineExtension
         $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
         $loader->load('orm.xml');
 
-        $container->setParameter('doctrine.orm.entity_managers', $entityManagers = array_keys($config['entity_managers']));
+        $entityManagers = array();
+        foreach (array_keys($config['entity_managers']) as $name) {
+            $entityManagers[$name] = sprintf('doctrine.orm.%s_entity_manager', $name);
+        }
+        $container->setParameter('doctrine.orm.entity_managers', $entityManagers);
 
         if (empty($config['default_entity_manager'])) {
-            $config['default_entity_manager'] = reset($entityManagers);
+            $tmp = array_keys($entityManagers);
+            $config['default_entity_manager'] = reset($tmp);
         }
 
         $options = array('default_entity_manager', 'auto_generate_proxy_classes', 'proxy_dir', 'proxy_namespace');

+ 0 - 1
src/Symfony/Bundle/DoctrineBundle/Resources/config/orm.xml

@@ -7,7 +7,6 @@
     <parameters>
         <parameter key="doctrine.orm.configuration.class">Doctrine\ORM\Configuration</parameter>
         <parameter key="doctrine.orm.entity_manager.class">Doctrine\ORM\EntityManager</parameter>
-        <parameter key="doctrine.orm.entity_managers" type="collection"></parameter>
 
         <!-- cache -->
         <parameter key="doctrine.orm.cache.array.class">Doctrine\Common\Cache\ArrayCache</parameter>

+ 1 - 1
src/Symfony/Bundle/DoctrineBundle/Tests/CacheWarmer/ProxyCacheWarmerTest.php

@@ -41,7 +41,7 @@ class ProxyCacheWarmerTest extends \Symfony\Bundle\DoctrineBundle\Tests\TestCase
         $container->expects($this->at(2))
                   ->method('getParameter')
                   ->with($this->equalTo('doctrine.orm.entity_managers'))
-                  ->will($this->returnValue(array('default', 'foo')));
+                  ->will($this->returnValue(array('default' => 'doctrine.orm.default_entity_manager', 'foo' => 'doctrine.orm.foo_entity_manager')));
         $container->expects($this->at(3))
                   ->method('get')
                   ->with($this->equalTo('doctrine.orm.default_entity_manager'))

+ 2 - 2
src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php

@@ -154,7 +154,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
         $this->assertEquals('create', $definition->getFactoryMethod());
         $this->assertArrayHasKey('doctrine.orm.entity_manager', $definition->getTags());
 
-        $this->assertEquals(array("default"), $container->getParameter('doctrine.orm.entity_managers'), "Set of the existing EntityManagers names is incorrect.");
+        $this->assertEquals(array('default' => 'doctrine.orm.default_entity_manager'), $container->getParameter('doctrine.orm.entity_managers'), "Set of the existing EntityManagers names is incorrect.");
 
         $arguments = $definition->getArguments();
         $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]);
@@ -567,7 +567,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
         $this->compileContainer($container);
 
-        $this->assertEquals(array("em1", "em2"), $container->getParameter('doctrine.orm.entity_managers'), "Set of the existing EntityManagers names is incorrect.");
+        $this->assertEquals(array('em1' => 'doctrine.orm.em1_entity_manager', 'em2' => 'doctrine.orm.em2_entity_manager'), $container->getParameter('doctrine.orm.entity_managers'), "Set of the existing EntityManagers names is incorrect.");
 
         $def1 = $container->getDefinition('doctrine.orm.em1_metadata_driver');
         $def2 = $container->getDefinition('doctrine.orm.em2_metadata_driver');