Skip to content

Commit 6cd8bc2

Browse files
committed
Merge branch 'fork/NanoSector/feature/type-aliases-support' into 2.15.x
# Conflicts: # src/DependencyInjection/DoctrineExtension.php
2 parents 66b89bc + 27c31c3 commit 6cd8bc2

File tree

3 files changed

+39
-15
lines changed

3 files changed

+39
-15
lines changed

src/DependencyInjection/DoctrineExtension.php

+15-13
Original file line numberDiff line numberDiff line change
@@ -517,19 +517,21 @@ protected function ormLoad(array $config, ContainerBuilder $container)
517517
$controllerResolverDefaults['evict_cache'] = true;
518518
}
519519

520-
if ($controllerResolverDefaults) {
521-
$container->getDefinition('doctrine.orm.entity_value_resolver')->setArgument(2, (new Definition(MapEntity::class))->setArguments([
522-
null,
523-
null,
524-
null,
525-
$controllerResolverDefaults['mapping'] ?? null,
526-
null,
527-
null,
528-
null,
529-
$controllerResolverDefaults['evict_cache'] ?? null,
530-
$controllerResolverDefaults['disabled'] ?? false,
531-
]));
532-
}
520+
$valueResolverDefinition = $container->getDefinition('doctrine.orm.entity_value_resolver');
521+
$valueResolverDefinition->setArgument(2, (new Definition(MapEntity::class))->setArguments([
522+
null,
523+
null,
524+
null,
525+
$controllerResolverDefaults['mapping'] ?? null,
526+
null,
527+
null,
528+
null,
529+
$controllerResolverDefaults['evict_cache'] ?? null,
530+
$controllerResolverDefaults['disabled'] ?? false,
531+
]));
532+
533+
// Symfony 7.3 and higher expose type alias support in the EntityValueResolver
534+
$valueResolverDefinition->setArgument(3, $config['resolve_target_entities']);
533535

534536
// not available in Doctrine ORM 3.0 and higher
535537
if (! class_exists(ConvertMappingCommand::class)) {

tests/ContainerTest.php

+6
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Doctrine\ORM\Tools\Console\Command\SchemaTool\UpdateCommand;
1616
use Doctrine\Persistence\ManagerRegistry;
1717
use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
18+
use Symfony\Bridge\Doctrine\ArgumentResolver\EntityValueResolver;
1819
use Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer;
1920
use Symfony\Bridge\Doctrine\DataCollector\DoctrineDataCollector;
2021
use Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor;
@@ -23,6 +24,7 @@
2324
use Symfony\Component\Cache\Adapter\ArrayAdapter;
2425
use Symfony\Component\Cache\Adapter\PhpArrayAdapter;
2526

27+
use function class_exists;
2628
use function interface_exists;
2729

2830
class ContainerTest extends TestCase
@@ -39,6 +41,10 @@ public function testContainer(): void
3941
$this->assertInstanceOf(Reader::class, $container->get('doctrine.orm.metadata.annotation_reader'));
4042
}
4143

44+
if (class_exists(EntityValueResolver::class)) {
45+
$this->assertInstanceOf(EntityValueResolver::class, $container->get('doctrine.orm.entity_value_resolver'));
46+
}
47+
4248
$this->assertInstanceOf(DoctrineDataCollector::class, $container->get('data_collector.doctrine'));
4349
$this->assertInstanceOf(DBALConfiguration::class, $container->get('doctrine.dbal.default_connection.configuration'));
4450
$this->assertInstanceOf(EventManager::class, $container->get('doctrine.dbal.default_connection.event_manager'));

tests/DependencyInjection/DoctrineExtensionTest.php

+18-2
Original file line numberDiff line numberDiff line change
@@ -1499,13 +1499,29 @@ public function testControllerResolver(bool $simpleEntityManagerConfig): void
14991499
$config['orm'] = [];
15001500
}
15011501

1502-
$config['orm']['controller_resolver'] = ['auto_mapping' => true];
1502+
$config['orm']['controller_resolver'] = ['auto_mapping' => true];
1503+
$config['orm']['resolve_target_entities'] = ['Throwable' => 'stdClass'];
15031504

15041505
$extension->load([$config], $container);
15051506

15061507
$controllerResolver = $container->getDefinition('doctrine.orm.entity_value_resolver');
15071508

1508-
$this->assertEquals([new Reference('doctrine'), new Reference('doctrine.orm.entity_value_resolver.expression_language', $container::IGNORE_ON_INVALID_REFERENCE)], $controllerResolver->getArguments());
1509+
$this->assertEquals([
1510+
0 => new Reference('doctrine'),
1511+
1 => new Reference('doctrine.orm.entity_value_resolver.expression_language', $container::IGNORE_ON_INVALID_REFERENCE),
1512+
2 => (new Definition(MapEntity::class))->setArguments([
1513+
null,
1514+
null,
1515+
null,
1516+
null,
1517+
null,
1518+
null,
1519+
null,
1520+
null,
1521+
false,
1522+
]),
1523+
3 => ['Throwable' => 'stdClass'],
1524+
], $controllerResolver->getArguments());
15091525

15101526
$container = $this->getContainer();
15111527

0 commit comments

Comments
 (0)