diff --git a/tests/Type/Doctrine/QueryBuilderReproductionsTest.php b/tests/Type/Doctrine/QueryBuilderReproductionsTest.php new file mode 100644 index 00000000..80c00e65 --- /dev/null +++ b/tests/Type/Doctrine/QueryBuilderReproductionsTest.php @@ -0,0 +1,38 @@ + + */ + public function dataFileAsserts(): iterable + { + yield from $this->gatherAssertTypes(__DIR__ . '/data/queryBuilderReproductions.php'); + } + + /** + * @dataProvider dataFileAsserts + * @param mixed ...$args + */ + public function testFileAsserts( + string $assertType, + string $file, + ...$args + ): void + { + $this->assertFileAsserts($assertType, $file, ...$args); + } + + public static function getAdditionalConfigFiles(): array + { + return [ + __DIR__ . '/data/QueryResult/config.neon', + ]; + } + +} diff --git a/tests/Type/Doctrine/data/QueryResult/Entities/OrderItem.php b/tests/Type/Doctrine/data/QueryResult/Entities/OrderItem.php new file mode 100644 index 00000000..b9b570c1 --- /dev/null +++ b/tests/Type/Doctrine/data/QueryResult/Entities/OrderItem.php @@ -0,0 +1,20 @@ + true])] + private ?int $id = null; + +} diff --git a/tests/Type/Doctrine/data/QueryResult/entity-manager.php b/tests/Type/Doctrine/data/QueryResult/entity-manager.php index c9ba38af..2760d5f4 100644 --- a/tests/Type/Doctrine/data/QueryResult/entity-manager.php +++ b/tests/Type/Doctrine/data/QueryResult/entity-manager.php @@ -22,11 +22,22 @@ [__DIR__ . '/Entities'] ), 'QueryResult\Entities\\'); +if (PHP_VERSION_ID >= 80100) { + $metadataDriver->addDriver( + new AttributeDriver([__DIR__ . '/Entities']), + 'QueryResult\Entities\\' + ); +} + if (property_exists(Column::class, 'enumType') && PHP_VERSION_ID >= 80100) { $metadataDriver->addDriver(new AnnotationDriver( new AnnotationReader(), [__DIR__ . '/EntitiesEnum'] ), 'QueryResult\EntitiesEnum\\'); + $metadataDriver->addDriver( + new AttributeDriver([__DIR__ . '/EntitiesEnum']), + 'QueryResult\EntitiesEnum\\' + ); } $config->setMetadataDriverImpl($metadataDriver); diff --git a/tests/Type/Doctrine/data/queryBuilderReproductions.php b/tests/Type/Doctrine/data/queryBuilderReproductions.php new file mode 100644 index 00000000..e03479fc --- /dev/null +++ b/tests/Type/Doctrine/data/queryBuilderReproductions.php @@ -0,0 +1,31 @@ +entityManager = $entityManager; + } + + public function doFoo(): void + { + $result = $this->entityManager->createQueryBuilder() + ->select('DISTINCT IDENTITY(oi.product) AS id') + ->from(OrderItem::class, 'oi') + ->join('oi.product', 'p') + ->getQuery() + ->getArrayResult(); + assertType('list', $result); + } + +}