Browse Source

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

Fabien Potencier 14 năm trước cách đây
mục cha
commit
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
 API of the framework. If you "hack" the core, you should probably follow the
 timeline closely anyway.
 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
 PR12 to beta1
 -------------
 -------------
 
 

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

@@ -64,10 +64,8 @@ class ProxyCacheWarmer implements CacheWarmerInterface
             return;
             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();
             $classes = $em->getMetadataFactory()->getAllMetadata();
             $em->getProxyFactory()->generateProxyClasses($classes);
             $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()
     protected function getDoctrineEntityManagers()
     {
     {
-        $entityManagerNames = $this->container->getParameter('doctrine.orm.entity_managers');
         $entityManagers = array();
         $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;
         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 = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
         $loader->load('orm.xml');
         $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'])) {
         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');
         $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>
     <parameters>
         <parameter key="doctrine.orm.configuration.class">Doctrine\ORM\Configuration</parameter>
         <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_manager.class">Doctrine\ORM\EntityManager</parameter>
-        <parameter key="doctrine.orm.entity_managers" type="collection"></parameter>
 
 
         <!-- cache -->
         <!-- cache -->
         <parameter key="doctrine.orm.cache.array.class">Doctrine\Common\Cache\ArrayCache</parameter>
         <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))
         $container->expects($this->at(2))
                   ->method('getParameter')
                   ->method('getParameter')
                   ->with($this->equalTo('doctrine.orm.entity_managers'))
                   ->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))
         $container->expects($this->at(3))
                   ->method('get')
                   ->method('get')
                   ->with($this->equalTo('doctrine.orm.default_entity_manager'))
                   ->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->assertEquals('create', $definition->getFactoryMethod());
         $this->assertArrayHasKey('doctrine.orm.entity_manager', $definition->getTags());
         $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();
         $arguments = $definition->getArguments();
         $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]);
         $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]);
@@ -567,7 +567,7 @@ abstract class AbstractDoctrineExtensionTest extends TestCase
 
 
         $this->compileContainer($container);
         $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');
         $def1 = $container->getDefinition('doctrine.orm.em1_metadata_driver');
         $def2 = $container->getDefinition('doctrine.orm.em2_metadata_driver');
         $def2 = $container->getDefinition('doctrine.orm.em2_metadata_driver');