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

This commit is contained in:
Fabien Potencier 2011-04-27 23:01:04 +02:00
parent a2a8edbabd
commit 43e38c3ba4
7 changed files with 23 additions and 14 deletions

View File

@ -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
-------------

View File

@ -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);
}

View File

@ -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;
}

View File

@ -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');

View File

@ -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>

View File

@ -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'))

View File

@ -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');