From 38db3bad8f1567d7bf64806738d724261f8a2b5c Mon Sep 17 00:00:00 2001 From: Ondrej Mirtes Date: Sun, 1 Sep 2024 15:16:09 +0200 Subject: [PATCH] Fix internal error Closes https://github.com/phpstan/phpstan-doctrine/issues/602 --- src/Type/Doctrine/ArgumentsProcessor.php | 3 +++ tests/Rules/Doctrine/ORM/data/query-builder-dql.php | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Type/Doctrine/ArgumentsProcessor.php b/src/Type/Doctrine/ArgumentsProcessor.php index f2f88b82..4ace7f16 100644 --- a/src/Type/Doctrine/ArgumentsProcessor.php +++ b/src/Type/Doctrine/ArgumentsProcessor.php @@ -34,6 +34,9 @@ public function processArgs( { $args = []; foreach ($methodCallArgs as $arg) { + if ($arg->unpack) { + throw new DynamicQueryBuilderArgumentException(); + } $value = $scope->getType($arg->value); if ( $value instanceof ExprType diff --git a/tests/Rules/Doctrine/ORM/data/query-builder-dql.php b/tests/Rules/Doctrine/ORM/data/query-builder-dql.php index f94085a3..e221f3ed 100644 --- a/tests/Rules/Doctrine/ORM/data/query-builder-dql.php +++ b/tests/Rules/Doctrine/ORM/data/query-builder-dql.php @@ -291,12 +291,17 @@ public function qbExprMethod(): void $queryBuilder->getQuery(); } - public function bug602(array $objectConditions): void + public function bug602(array $objectConditions, bool $rand): void { + $orParts = ['e.title LIKE :termLike']; + if ($rand) { + $orParts[] = 'p.version = :term'; + } $queryBuilder = $this->entityManager->createQueryBuilder(); $queryBuilder->select('e') ->from(MyEntity::class, 'e') - ->andWhere($queryBuilder->expr()->orX(...$objectConditions)); + ->andWhere($queryBuilder->expr()->orX(...$orParts)) + ->setParameter('termLike', 'someTerm'); } }