From 6e4614db1c0d062a0a7313ca118e3544c485aae1 Mon Sep 17 00:00:00 2001 From: fancyweb Date: Fri, 15 May 2020 15:50:11 +0200 Subject: [PATCH] Preload Autoloader class when the ORM is used --- DependencyInjection/DoctrineExtension.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/DependencyInjection/DoctrineExtension.php b/DependencyInjection/DoctrineExtension.php index 223eaa4d3..e12d067c3 100644 --- a/DependencyInjection/DoctrineExtension.php +++ b/DependencyInjection/DoctrineExtension.php @@ -5,6 +5,7 @@ use Doctrine\Bundle\DoctrineBundle\Dbal\RegexSchemaAssetFilter; use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\ServiceRepositoryCompilerPass; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepositoryInterface; +use Doctrine\ORM\Proxy\Autoloader; use Doctrine\ORM\UnitOfWork; use LogicException; use Symfony\Bridge\Doctrine\DependencyInjection\AbstractDoctrineExtension; @@ -349,7 +350,7 @@ protected function ormLoad(array $config, ContainerBuilder $container) $container->setParameter('doctrine.orm.' . $key, $config[$key]); } - $container->setAlias('doctrine.orm.entity_manager', sprintf('doctrine.orm.%s_entity_manager', $config['default_entity_manager'])); + $container->setAlias('doctrine.orm.entity_manager', $defaultEntityManagerDefinitionId = sprintf('doctrine.orm.%s_entity_manager', $config['default_entity_manager'])); $container->getAlias('doctrine.orm.entity_manager')->setPublic(true); $config['entity_managers'] = $this->fixManagersAutoMappings($config['entity_managers'], $container->getParameter('kernel.bundles')); @@ -380,6 +381,14 @@ protected function ormLoad(array $config, ContainerBuilder $container) $container->registerForAutoconfiguration(ServiceEntityRepositoryInterface::class) ->addTag(ServiceRepositoryCompilerPass::REPOSITORY_SERVICE_TAG); + + /** + * @see DoctrineBundle::boot() + */ + $container->getDefinition($defaultEntityManagerDefinitionId) + ->addTag('container.preload', [ + 'class' => Autoloader::class, + ]); } /**