diff --git a/src/Type/Doctrine/QueryBuilder/ReturnQueryBuilderExpressionTypeResolverExtension.php b/src/Type/Doctrine/QueryBuilder/ReturnQueryBuilderExpressionTypeResolverExtension.php index ea4f8bcb..04d88df2 100644 --- a/src/Type/Doctrine/QueryBuilder/ReturnQueryBuilderExpressionTypeResolverExtension.php +++ b/src/Type/Doctrine/QueryBuilder/ReturnQueryBuilderExpressionTypeResolverExtension.php @@ -25,6 +25,9 @@ class ReturnQueryBuilderExpressionTypeResolverExtension implements ExpressionTyp private OtherMethodQueryBuilderParser $otherMethodQueryBuilderParser; + /** @var array */ + private array $queryBuilderClasses = []; + public function __construct( OtherMethodQueryBuilderParser $otherMethodQueryBuilderParser ) @@ -85,7 +88,8 @@ private function getMethodReflection(CallLike $call, Scope $scope): ?MethodRefle $methodName = $call->name->name; foreach ($callerType->getObjectClassReflections() as $callerClassReflection) { - if ($callerClassReflection->is(QueryBuilder::class)) { + $className = $callerClassReflection->getName(); + if (($this->queryBuilderClasses[$className] ??= $callerClassReflection->is(QueryBuilder::class))) { return null; // covered by QueryBuilderMethodDynamicReturnTypeExtension } if ($methodName === 'createQueryBuilder' && $callerClassReflection->is(EntityRepository::class)) {