diff --git a/DependencyInjection/DoctrineExtension.php b/DependencyInjection/DoctrineExtension.php index fc8774b6e..285aa6660 100644 --- a/DependencyInjection/DoctrineExtension.php +++ b/DependencyInjection/DoctrineExtension.php @@ -692,8 +692,8 @@ protected function getMappingResourceExtension() protected function loadCacheDriver($driverName, $entityManagerName, array $driverMap, ContainerBuilder $container) { if (!empty($driverMap['cache_provider'])) { - $aliasId = $this->getObjectManagerElementName($driverName); - $serviceId = printf('doctrine_cache.providers.%s', $driverMap['cache_provider']); + $aliasId = $this->getObjectManagerElementName(sprintf('%s_%s', $entityManagerName, $driverName)); + $serviceId = sprintf('doctrine_cache.providers.%s', $driverMap['cache_provider']); $container->setAlias($aliasId, new Alias($serviceId, false)); diff --git a/Tests/DependencyInjection/DoctrineExtensionTest.php b/Tests/DependencyInjection/DoctrineExtensionTest.php index 95f96b028..8f67b3473 100644 --- a/Tests/DependencyInjection/DoctrineExtensionTest.php +++ b/Tests/DependencyInjection/DoctrineExtensionTest.php @@ -429,6 +429,39 @@ public function testAnnotationsBundleMappingDetectionWithVendorNamespace() $this->assertEquals('Fixtures\Bundles\Vendor\AnnotationsBundle\Entity', $calls[0][1][1]); } + public function testCacheConfiguration() + { + $container = $this->getContainer(); + $extension = new DoctrineExtension(); + + $config = $this->getConnectionConfig(); + $config['orm'] = array( + 'metadata_cache_driver' => array( + 'cache_provider' => 'metadata_cache', + ), + 'query_cache_driver' => array( + 'cache_provider' => 'query_cache', + ), + 'result_cache_driver' => array( + 'cache_provider' => 'result_cache', + ), + ); + + $extension->load(array($config), $container); + + $this->assertTrue($container->hasAlias('doctrine.orm.default_metadata_cache')); + $alias = $container->getAlias('doctrine.orm.default_metadata_cache'); + $this->assertEquals('doctrine_cache.providers.metadata_cache', (string) $alias); + + $this->assertTrue($container->hasAlias('doctrine.orm.default_query_cache')); + $alias = $container->getAlias('doctrine.orm.default_query_cache'); + $this->assertEquals('doctrine_cache.providers.query_cache', (string) $alias); + + $this->assertTrue($container->hasAlias('doctrine.orm.default_result_cache')); + $alias = $container->getAlias('doctrine.orm.default_result_cache'); + $this->assertEquals('doctrine_cache.providers.result_cache', (string) $alias); + } + private function getContainer($bundles = 'YamlBundle', $vendor = null) { $bundles = (array) $bundles;