From 03ce36e07e58893006431ca6f596919b3f0524d7 Mon Sep 17 00:00:00 2001 From: Teoh Han Hui Date: Mon, 30 Apr 2018 12:08:56 +0200 Subject: [PATCH] Revert "Simplify boolean filter" --- src/Bridge/Doctrine/Orm/Filter/BooleanFilter.php | 6 ++++-- .../Bridge/Doctrine/Orm/Filter/BooleanFilterTest.php | 12 ++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/Bridge/Doctrine/Orm/Filter/BooleanFilter.php b/src/Bridge/Doctrine/Orm/Filter/BooleanFilter.php index f868ed5376e..8deb9dfe1cc 100644 --- a/src/Bridge/Doctrine/Orm/Filter/BooleanFilter.php +++ b/src/Bridge/Doctrine/Orm/Filter/BooleanFilter.php @@ -96,9 +96,11 @@ protected function filterProperty(string $property, $value, QueryBuilder $queryB list($alias, $field) = $this->addJoinsForNestedProperty($property, $alias, $queryBuilder, $queryNameGenerator, $resourceClass); } - $expr = $queryBuilder->expr(); + $valueParameter = $queryNameGenerator->generateParameterName($field); + $queryBuilder - ->andWhere($expr->eq(sprintf('%s.%s', $alias, $field), $expr->literal($value))); + ->andWhere(sprintf('%s.%s = :%s', $alias, $field, $valueParameter)) + ->setParameter($valueParameter, $value); } /** diff --git a/tests/Bridge/Doctrine/Orm/Filter/BooleanFilterTest.php b/tests/Bridge/Doctrine/Orm/Filter/BooleanFilterTest.php index d65335d1d8c..27141419db7 100644 --- a/tests/Bridge/Doctrine/Orm/Filter/BooleanFilterTest.php +++ b/tests/Bridge/Doctrine/Orm/Filter/BooleanFilterTest.php @@ -67,7 +67,7 @@ public function provideApplyTestData(): array [ 'dummyBoolean' => 'true', ], - sprintf('SELECT o FROM %s o WHERE o.dummyBoolean = true', Dummy::class), + sprintf('SELECT o FROM %s o WHERE o.dummyBoolean = :dummyBoolean_p1', Dummy::class), ], 'string ("false")' => [ [ @@ -78,7 +78,7 @@ public function provideApplyTestData(): array [ 'dummyBoolean' => 'false', ], - sprintf('SELECT o FROM %s o WHERE o.dummyBoolean = false', Dummy::class), + sprintf('SELECT o FROM %s o WHERE o.dummyBoolean = :dummyBoolean_p1', Dummy::class), ], 'non-boolean' => [ [ @@ -100,7 +100,7 @@ public function provideApplyTestData(): array [ 'dummyBoolean' => '0', ], - sprintf('SELECT o FROM %s o WHERE o.dummyBoolean = false', Dummy::class), + sprintf('SELECT o FROM %s o WHERE o.dummyBoolean = :dummyBoolean_p1', Dummy::class), ], 'numeric string ("1")' => [ [ @@ -111,7 +111,7 @@ public function provideApplyTestData(): array [ 'dummyBoolean' => '1', ], - sprintf('SELECT o FROM %s o WHERE o.dummyBoolean = true', Dummy::class), + sprintf('SELECT o FROM %s o WHERE o.dummyBoolean = :dummyBoolean_p1', Dummy::class), ], 'nested properties' => [ [ @@ -122,7 +122,7 @@ public function provideApplyTestData(): array [ 'relatedDummy.dummyBoolean' => '1', ], - sprintf('SELECT o FROM %s o INNER JOIN o.relatedDummy relatedDummy_a1 WHERE relatedDummy_a1.dummyBoolean = true', Dummy::class), + sprintf('SELECT o FROM %s o INNER JOIN o.relatedDummy relatedDummy_a1 WHERE relatedDummy_a1.dummyBoolean = :dummyBoolean_p1', Dummy::class), ], 'numeric string ("1") on non-boolean property' => [ [ @@ -180,7 +180,7 @@ public function provideApplyTestData(): array 'name' => 'true', 'id' => '0', ], - sprintf('SELECT o FROM %s o WHERE o.dummyBoolean = false', Dummy::class), + sprintf('SELECT o FROM %s o WHERE o.dummyBoolean = :dummyBoolean_p1', Dummy::class), ], ]; }