4
4
5
5
use BackedEnum ;
6
6
use Doctrine \ORM \EntityManagerInterface ;
7
- use Doctrine \ORM \Mapping \ClassMetadata ;
8
7
use Doctrine \ORM \Mapping \ClassMetadataInfo ;
9
8
use Doctrine \ORM \Query ;
10
9
use Doctrine \ORM \Query \AST ;
35
34
use PHPStan \Type \TypeTraverser ;
36
35
use PHPStan \Type \TypeUtils ;
37
36
use PHPStan \Type \UnionType ;
37
+ use function array_key_exists ;
38
38
use function array_map ;
39
39
use function assert ;
40
40
use function class_exists ;
56
56
*
57
57
* It extends SqlkWalker because AST\Node::dispatch() accepts SqlWalker only
58
58
*
59
- * @phpstan-type QueryComponent array{metadata: ClassMetadata<object>, parent: mixed, relation: ?array{orderBy: array<array-key, string>, indexBy: ?string, fieldName: string, targetEntity: string, sourceEntity: string, isOwningSide: bool, mappedBy: string, type: int}, map: mixed, nestingLevel: int, token: mixed}
59
+ * @phpstan-import- type QueryComponent from Parser
60
60
*/
61
61
class QueryResultTypeWalker extends SqlWalker
62
62
{
@@ -229,6 +229,7 @@ public function walkPathExpression($pathExpr)
229
229
$ fieldName = $ pathExpr ->field ;
230
230
$ dqlAlias = $ pathExpr ->identificationVariable ;
231
231
$ qComp = $ this ->queryComponents [$ dqlAlias ];
232
+ assert (array_key_exists ('metadata ' , $ qComp ));
232
233
$ class = $ qComp ['metadata ' ];
233
234
234
235
assert ($ fieldName !== null );
@@ -516,6 +517,7 @@ public function walkFunction($function)
516
517
$ dqlAlias = $ function ->pathExpression ->identificationVariable ;
517
518
$ assocField = $ function ->pathExpression ->field ;
518
519
$ queryComp = $ this ->queryComponents [$ dqlAlias ];
520
+ assert (array_key_exists ('metadata ' , $ queryComp ));
519
521
$ class = $ queryComp ['metadata ' ];
520
522
$ assoc = $ class ->associationMappings [$ assocField ];
521
523
$ assocClassName = $ assoc ['targetEntity ' ];
@@ -756,9 +758,11 @@ public function walkSelectExpression($selectExpression)
756
758
if (is_string ($ expr )) {
757
759
$ dqlAlias = $ expr ;
758
760
$ queryComp = $ this ->queryComponents [$ dqlAlias ];
761
+ assert (array_key_exists ('metadata ' , $ queryComp ));
759
762
$ class = $ queryComp ['metadata ' ];
760
763
$ resultAlias = $ selectExpression ->fieldIdentificationVariable ?? $ dqlAlias ;
761
764
765
+ assert (array_key_exists ('parent ' , $ queryComp ));
762
766
if ($ queryComp ['parent ' ] !== null ) {
763
767
return '' ;
764
768
}
@@ -785,6 +789,7 @@ public function walkSelectExpression($selectExpression)
785
789
786
790
$ dqlAlias = $ expr ->identificationVariable ;
787
791
$ qComp = $ this ->queryComponents [$ dqlAlias ];
792
+ assert (array_key_exists ('metadata ' , $ qComp ));
788
793
$ class = $ qComp ['metadata ' ];
789
794
790
795
[$ typeName , $ enumType ] = $ this ->getTypeOfField ($ class , $ fieldName );
0 commit comments