File tree Expand file tree Collapse file tree 2 files changed +65
-0
lines changed
tests/Type/Doctrine/data/QueryResult Expand file tree Collapse file tree 2 files changed +65
-0
lines changed Original file line number Diff line number Diff line change 1+ <?php
2+ declare (strict_types=1 );
3+
4+ namespace Type \Doctrine \data \QueryResult \Entities ;
5+
6+ use Doctrine \ORM \Mapping \Column ;
7+ use Doctrine \ORM \Mapping \Entity ;
8+ use Doctrine \ORM \Mapping \GeneratedValue ;
9+ use Doctrine \ORM \Mapping \Id ;
10+
11+ interface VehicleInterface
12+ {
13+
14+ }
15+
16+ /**
17+ * @Entity
18+ */
19+ class Car implements VehicleInterface
20+ {
21+ /**
22+ * @GeneratedValue()
23+ * @Column(type="integer")
24+ * @Id
25+ *
26+ * @var string
27+ */
28+ public $ id ;
29+ }
30+
31+ /**
32+ * @Entity
33+ */
34+ class Truck implements VehicleInterface
35+ {
36+ /**
37+ * @GeneratedValue()
38+ * @Column(type="integer")
39+ * @Id
40+ *
41+ * @var string
42+ */
43+ public $ id ;
44+ }
Original file line number Diff line number Diff line change 99use Doctrine \ORM \Query \Expr \From ;
1010use Doctrine \ORM \QueryBuilder ;
1111use QueryResult \Entities \Many ;
12+ use Type \Doctrine \data \QueryResult \Entities \Truck ;
13+ use Type \Doctrine \data \QueryResult \Entities \VehicleInterface ;
1214use function PHPStan \Testing \assertType ;
1315
1416class QueryBuilderGetQuery
@@ -118,6 +120,20 @@ public function testQueryResultTypeIsMixedWhenDQLIsInvalid(EntityManagerInterfac
118120 assertType ('Doctrine\ORM\Query<mixed, mixed> ' , $ query );
119121 }
120122
123+ public function testQueryResultTypeIsMixedWhenDQLIsUsingAnInterfaceTypeDefinition (EntityManagerInterface $ em ): void
124+ {
125+ $ vehicle = $ this ->createVehicule ();
126+
127+ assertType (VehicleInterface::class, $ vehicle );
128+
129+ $ query = $ em ->createQueryBuilder ()
130+ ->select ('v ' )
131+ ->from (get_class ($ vehicle ), 'v ' )
132+ ->getQuery ();
133+
134+ assertType ('Doctrine\ORM\Query<null, mixed> ' , $ query );
135+ }
136+
121137 public function testQueryResultTypeIsVoidWithDeleteOrUpdate (EntityManagerInterface $ em ): void
122138 {
123139 $ query = $ em ->getRepository (Many::class)
@@ -261,4 +277,9 @@ private function getBranchingQueryBuilder(EntityManagerInterface $em): QueryBuil
261277
262278 return $ queryBuilder ;
263279 }
280+
281+ private function createVehicule (): VehicleInterface
282+ {
283+ return new Truck ();
284+ }
264285}
You can’t perform that action at this time.
0 commit comments