From a73920f2f0e7ed66ffdabb6ae986d0facbd921bc Mon Sep 17 00:00:00 2001 From: Mateusz Charytoniuk <mateusz.charytoniuk@protonmail.com> Date: Sun, 11 Feb 2024 10:25:53 +0100 Subject: [PATCH] chore(doctrine): preload class metadata --- .../DoctrineEntityManagerRepositoryProvider.php | 11 +++++++++++ .../DoctrineORMConfigurationProvider.php | 2 ++ 2 files changed, 13 insertions(+) diff --git a/src/SingletonProvider/DoctrineEntityManagerRepositoryProvider.php b/src/SingletonProvider/DoctrineEntityManagerRepositoryProvider.php index 6167b487..587ab4f6 100644 --- a/src/SingletonProvider/DoctrineEntityManagerRepositoryProvider.php +++ b/src/SingletonProvider/DoctrineEntityManagerRepositoryProvider.php @@ -44,6 +44,8 @@ final readonly class DoctrineEntityManagerRepositoryProvider extends SingletonPr $this->generateProxies($doctrineEntityManagerRepository); } + $this->preloadClassMetadata($doctrineEntityManagerRepository); + return $doctrineEntityManagerRepository; } @@ -66,4 +68,13 @@ final readonly class DoctrineEntityManagerRepositoryProvider extends SingletonPr */ $entityManager->getConnection()->close(); } + + private function preloadClassMetadata(DoctrineEntityManagerRepository $doctrineEntityManagerRepository): void + { + $doctrineEntityManagerRepository + ->buildEntityManager() + ->getMetadataFactory() + ->getAllMetadata() + ; + } } diff --git a/src/SingletonProvider/DoctrineORMConfigurationProvider.php b/src/SingletonProvider/DoctrineORMConfigurationProvider.php index 5167ace0..e256eb9f 100644 --- a/src/SingletonProvider/DoctrineORMConfigurationProvider.php +++ b/src/SingletonProvider/DoctrineORMConfigurationProvider.php @@ -14,6 +14,7 @@ use Distantmagic\Resonance\Feature; use Distantmagic\Resonance\PHPProjectFiles; use Distantmagic\Resonance\SingletonContainer; use Distantmagic\Resonance\SingletonProvider; +use Doctrine\Common\EventManager; use Doctrine\ORM\Configuration; use Doctrine\ORM\ORMSetup; use Doctrine\ORM\Proxy\ProxyFactory; @@ -30,6 +31,7 @@ final readonly class DoctrineORMConfigurationProvider extends SingletonProvider private ApplicationConfiguration $applicationConfiguration, private DoctrineAttributeDriver $doctrineAttributeDriver, private DoctrineEntityListenerResolver $doctrineEntityListenerResolver, + private EventManager $eventManager, ) {} public function provide(SingletonContainer $singletons, PHPProjectFiles $phpProjectFiles): Configuration -- GitLab