From 6dc924609283bba86c9b8f32283365989b847f0f Mon Sep 17 00:00:00 2001 From: Thomas Beaujean Date: Mon, 21 Apr 2025 14:00:28 +0200 Subject: [PATCH] Type return of getQueryBuilder --- src/Generator/RepositoryGenerator.php | 3 +++ src/Generator/TemplateService.php | 2 ++ .../views/Generator/TopRepositoryTemplate.html.twig | 9 +++++++++ tests/Repository/MyClassRepositoryBase.php | 9 +++++++++ tests/Service/ExpectedMyClassRepositoryBase.txt | 9 +++++++++ 5 files changed, 32 insertions(+) diff --git a/src/Generator/RepositoryGenerator.php b/src/Generator/RepositoryGenerator.php index e82f90a..27acb04 100644 --- a/src/Generator/RepositoryGenerator.php +++ b/src/Generator/RepositoryGenerator.php @@ -59,6 +59,8 @@ private function generateRepository(array $allMetadata, string $bundleName, Clas $associationMappings = $meta->associationMappings; $customRepositoryClassName = $meta->customRepositoryClassName; + $rootEntityName = $meta->rootEntityName; + $pathParts = explode('\\', $customRepositoryClassName); $entityClassname = end($pathParts); @@ -80,6 +82,7 @@ private function generateRepository(array $allMetadata, string $bundleName, Clas $bundleName, $entityDql, $idType, + $rootEntityName, ); //parse the columns diff --git a/src/Generator/TemplateService.php b/src/Generator/TemplateService.php index e4acc9b..5391dea 100644 --- a/src/Generator/TemplateService.php +++ b/src/Generator/TemplateService.php @@ -25,6 +25,7 @@ public function renderTopClass( ?string $bundleName, string $entityDql, $idType, + $rootEntityName, ): string { $topClassparameter = array( 'namespace' => $namespace, @@ -34,6 +35,7 @@ public function renderTopClass( 'bundleName' => $bundleName, 'entityDql' => $entityDql, 'idType' => $idType, + 'rootEntityName' => $rootEntityName, ); return $this->twig->render($this->topRepositoryTemple, $topClassparameter); diff --git a/src/Resources/views/Generator/TopRepositoryTemplate.html.twig b/src/Resources/views/Generator/TopRepositoryTemplate.html.twig index 5dd4072..2fd5b22 100644 --- a/src/Resources/views/Generator/TopRepositoryTemplate.html.twig +++ b/src/Resources/views/Generator/TopRepositoryTemplate.html.twig @@ -85,6 +85,9 @@ class {{ entityClassname }}Base extends {{ extendClass }} }); } + /** + * @return \{{rootEntityName}}[] + */ public function getQueryBuilderResult( QueryBuilder $qb, bool $useQueryCache = false, @@ -100,6 +103,9 @@ class {{ entityClassname }}Base extends {{ extendClass }} ); } + /** + * @return \{{rootEntityName}} + */ public function getQueryBuilderSingleResult( QueryBuilder $qb, bool $useQueryCache = false, @@ -115,6 +121,9 @@ class {{ entityClassname }}Base extends {{ extendClass }} ); } + /** + * @return ?\{{rootEntityName}} + */ public function getQueryBuilderOneOrNullResult( QueryBuilder $qb, bool $useQueryCache = false, diff --git a/tests/Repository/MyClassRepositoryBase.php b/tests/Repository/MyClassRepositoryBase.php index f03b9ef..2640877 100644 --- a/tests/Repository/MyClassRepositoryBase.php +++ b/tests/Repository/MyClassRepositoryBase.php @@ -85,6 +85,9 @@ private function getCachedResult( }); } + /** + * @return \Tbn\QueryBuilderRepositoryGeneratorBundle\Tests\Entity\MyClass[] + */ public function getQueryBuilderResult( QueryBuilder $qb, bool $useQueryCache = false, @@ -100,6 +103,9 @@ public function getQueryBuilderResult( ); } + /** + * @return \Tbn\QueryBuilderRepositoryGeneratorBundle\Tests\Entity\MyClass + */ public function getQueryBuilderSingleResult( QueryBuilder $qb, bool $useQueryCache = false, @@ -115,6 +121,9 @@ public function getQueryBuilderSingleResult( ); } + /** + * @return ?\Tbn\QueryBuilderRepositoryGeneratorBundle\Tests\Entity\MyClass + */ public function getQueryBuilderOneOrNullResult( QueryBuilder $qb, bool $useQueryCache = false, diff --git a/tests/Service/ExpectedMyClassRepositoryBase.txt b/tests/Service/ExpectedMyClassRepositoryBase.txt index f03b9ef..2640877 100644 --- a/tests/Service/ExpectedMyClassRepositoryBase.txt +++ b/tests/Service/ExpectedMyClassRepositoryBase.txt @@ -85,6 +85,9 @@ class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\S }); } + /** + * @return \Tbn\QueryBuilderRepositoryGeneratorBundle\Tests\Entity\MyClass[] + */ public function getQueryBuilderResult( QueryBuilder $qb, bool $useQueryCache = false, @@ -100,6 +103,9 @@ class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\S ); } + /** + * @return \Tbn\QueryBuilderRepositoryGeneratorBundle\Tests\Entity\MyClass + */ public function getQueryBuilderSingleResult( QueryBuilder $qb, bool $useQueryCache = false, @@ -115,6 +121,9 @@ class MyClassRepositoryBase extends \Doctrine\Bundle\DoctrineBundle\Repository\S ); } + /** + * @return ?\Tbn\QueryBuilderRepositoryGeneratorBundle\Tests\Entity\MyClass + */ public function getQueryBuilderOneOrNullResult( QueryBuilder $qb, bool $useQueryCache = false,