diff --git a/DependencyInjection/DoctrineExtension.php b/DependencyInjection/DoctrineExtension.php
index 07f4405b1..0498ef703 100644
--- a/DependencyInjection/DoctrineExtension.php
+++ b/DependencyInjection/DoctrineExtension.php
@@ -15,6 +15,7 @@
use Symfony\Bridge\Doctrine\Messenger\DoctrineTransactionMiddleware;
use Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor;
use Symfony\Bridge\Doctrine\Validator\DoctrineLoader;
+use Symfony\Component\Cache\Adapter\ArrayAdapter;
use Symfony\Component\Cache\DoctrineProvider;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Alias;
@@ -743,7 +744,7 @@ protected function loadCacheDriver($cacheName, $objectManagerName, array $cacheD
if ($cacheDriver['type'] === null) {
$cacheDriver = [
'type' => 'pool',
- 'pool' => $this->getPoolNameForCacheDriver($cacheName),
+ 'pool' => $this->createArrayAdapterCachePool($container, $objectManagerName, $cacheName),
];
}
@@ -893,11 +894,7 @@ private function loadMessengerServices(ContainerBuilder $container) : void
private function createPoolCacheDefinition(ContainerBuilder $container, string $poolName) : string
{
- if (! class_exists(DoctrineProvider::class)) {
- throw new LogicException('Using the "pool" cache type is only supported when symfony/cache is installed.');
- }
-
- $serviceId = sprintf('doctrine.orm.cache.pool.%s', $poolName);
+ $serviceId = sprintf('doctrine.orm.cache.provider.%s', $poolName);
$definition = $container->register($serviceId, DoctrineProvider::class);
$definition->addArgument(new Reference($poolName));
@@ -906,13 +903,14 @@ private function createPoolCacheDefinition(ContainerBuilder $container, string $
return $serviceId;
}
- private function getPoolNameForCacheDriver(string $driverName) : string
+ private function createArrayAdapterCachePool(ContainerBuilder $container, string $objectManagerName, string $cacheName) : string
{
- switch ($driverName) {
- case 'metadata_cache':
- return 'cache.system';
- default:
- return 'cache.app';
- }
+ $id = sprintf('cache.doctrine.orm.%s.%s', $objectManagerName, str_replace('_cache', '', $cacheName));
+
+ $poolDefinition = $container->register($id, ArrayAdapter::class);
+ $poolDefinition->addTag('cache.pool');
+ $container->setDefinition($id, $poolDefinition);
+
+ return $id;
}
}
diff --git a/Resources/config/orm.xml b/Resources/config/orm.xml
index 349949749..336a2ad6a 100644
--- a/Resources/config/orm.xml
+++ b/Resources/config/orm.xml
@@ -140,6 +140,10 @@
+
+ CASE_LOWER
+ true
+
diff --git a/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php b/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php
index 92f910683..59b8e088e 100644
--- a/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php
+++ b/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php
@@ -348,13 +348,13 @@ public function testLoadMultipleConnections()
$this->assertEquals(DoctrineProvider::class, $definition->getClass());
$arguments = $definition->getArguments();
$this->assertInstanceOf(Reference::class, $arguments[0]);
- $this->assertEquals('cache.app', (string) $arguments[0]);
+ $this->assertEquals('cache.doctrine.orm.em1.query', (string) $arguments[0]);
$definition = $container->getDefinition((string) $container->getAlias('doctrine.orm.em1_result_cache'));
$this->assertEquals(DoctrineProvider::class, $definition->getClass());
$arguments = $definition->getArguments();
$this->assertInstanceOf(Reference::class, $arguments[0]);
- $this->assertEquals('cache.app', (string) $arguments[0]);
+ $this->assertEquals('cache.doctrine.orm.em1.result', (string) $arguments[0]);
}
public function testLoadLogging()
diff --git a/Tests/DependencyInjection/DoctrineExtensionTest.php b/Tests/DependencyInjection/DoctrineExtensionTest.php
index 66c45f42e..b4da9721f 100644
--- a/Tests/DependencyInjection/DoctrineExtensionTest.php
+++ b/Tests/DependencyInjection/DoctrineExtensionTest.php
@@ -326,19 +326,22 @@ public function testDependencyInjectionConfigurationDefaults()
$this->assertEquals(DoctrineProvider::class, $definition->getClass());
$arguments = $definition->getArguments();
$this->assertInstanceOf(Reference::class, $arguments[0]);
- $this->assertEquals('cache.system', (string) $arguments[0]);
+ $this->assertEquals('cache.doctrine.orm.default.metadata', (string) $arguments[0]);
+ $this->assertSame(ArrayAdapter::class, $container->getDefinition((string) $arguments[0])->getClass());
$definition = $container->getDefinition((string) $container->getAlias('doctrine.orm.default_query_cache'));
$this->assertEquals(DoctrineProvider::class, $definition->getClass());
$arguments = $definition->getArguments();
$this->assertInstanceOf(Reference::class, $arguments[0]);
- $this->assertEquals('cache.app', (string) $arguments[0]);
+ $this->assertEquals('cache.doctrine.orm.default.query', (string) $arguments[0]);
+ $this->assertSame(ArrayAdapter::class, $container->getDefinition((string) $arguments[0])->getClass());
$definition = $container->getDefinition((string) $container->getAlias('doctrine.orm.default_result_cache'));
$this->assertEquals(DoctrineProvider::class, $definition->getClass());
$arguments = $definition->getArguments();
$this->assertInstanceOf(Reference::class, $arguments[0]);
- $this->assertEquals('cache.app', (string) $arguments[0]);
+ $this->assertEquals('cache.doctrine.orm.default.result', (string) $arguments[0]);
+ $this->assertSame(ArrayAdapter::class, $container->getDefinition((string) $arguments[0])->getClass());
}
public function testUseSavePointsAddMethodCallToAddSavepointsToTheConnection()
@@ -775,38 +778,38 @@ public static function cacheConfigurationProvider() : array
return [
'metadata_cache_default' => [
'expectedAliasName' => 'doctrine.orm.default_metadata_cache',
- 'expectedAliasTarget' => 'doctrine.orm.cache.pool.cache.system',
+ 'expectedAliasTarget' => 'doctrine.orm.cache.provider.cache.doctrine.orm.default.metadata',
'cacheName' => 'metadata_cache_driver',
'cacheConfig' => ['type' => null],
],
'query_cache_default' => [
'expectedAliasName' => 'doctrine.orm.default_query_cache',
- 'expectedAliasTarget' => 'doctrine.orm.cache.pool.cache.app',
+ 'expectedAliasTarget' => 'doctrine.orm.cache.provider.cache.doctrine.orm.default.query',
'cacheName' => 'query_cache_driver',
'cacheConfig' => ['type' => null],
],
'result_cache_default' => [
'expectedAliasName' => 'doctrine.orm.default_result_cache',
- 'expectedAliasTarget' => 'doctrine.orm.cache.pool.cache.app',
+ 'expectedAliasTarget' => 'doctrine.orm.cache.provider.cache.doctrine.orm.default.result',
'cacheName' => 'result_cache_driver',
'cacheConfig' => ['type' => null],
],
'metadata_cache_pool' => [
'expectedAliasName' => 'doctrine.orm.default_metadata_cache',
- 'expectedAliasTarget' => 'doctrine.orm.cache.pool.metadata_cache_pool',
+ 'expectedAliasTarget' => 'doctrine.orm.cache.provider.metadata_cache_pool',
'cacheName' => 'metadata_cache_driver',
'cacheConfig' => ['type' => 'pool', 'pool' => 'metadata_cache_pool'],
],
'query_cache_pool' => [
'expectedAliasName' => 'doctrine.orm.default_query_cache',
- 'expectedAliasTarget' => 'doctrine.orm.cache.pool.query_cache_pool',
+ 'expectedAliasTarget' => 'doctrine.orm.cache.provider.query_cache_pool',
'cacheName' => 'query_cache_driver',
'cacheConfig' => ['type' => 'pool', 'pool' => 'query_cache_pool'],
],
'result_cache_pool' => [
'expectedAliasName' => 'doctrine.orm.default_result_cache',
- 'expectedAliasTarget' => 'doctrine.orm.cache.pool.result_cache_pool',
+ 'expectedAliasTarget' => 'doctrine.orm.cache.provider.result_cache_pool',
'cacheName' => 'result_cache_driver',
'cacheConfig' => ['type' => 'pool', 'pool' => 'result_cache_pool'],
],
diff --git a/composer.json b/composer.json
index 9ad06efd2..53b900b3a 100644
--- a/composer.json
+++ b/composer.json
@@ -28,6 +28,7 @@
"doctrine/dbal": "^2.5.12",
"doctrine/doctrine-cache-bundle": "~1.2",
"jdorn/sql-formatter": "^1.2.16",
+ "symfony/cache": "^3.4.30|^4.3.3",
"symfony/config": "^3.4.30|^4.3.3",
"symfony/console": "^3.4.30|^4.3.3",
"symfony/dependency-injection": "^3.4.30|^4.3.3",
@@ -39,7 +40,6 @@
"doctrine/orm": "^2.6",
"php-coveralls/php-coveralls": "^2.1",
"phpunit/phpunit": "^7.5",
- "symfony/cache": "^3.4.30|^4.3.3",
"symfony/phpunit-bridge": "^4.2",
"symfony/property-info": "^3.4.30|^4.3.3",
"symfony/twig-bridge": "^3.4|^4.1",