From 7118770f5e2c75e60f2a1f3adeeb8645565aa6c0 Mon Sep 17 00:00:00 2001 From: Priyadi Iman Nurcahyo <1102197+priyadi@users.noreply.github.com> Date: Sat, 7 Sep 2024 13:13:35 +0700 Subject: [PATCH] fix: LIMIT & OFFSET are not supported with replacing select count(*) --- CHANGELOG.md | 4 ++++ .../src/QueryBuilderAdapter.php | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e8d098..7b3318b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +# 0.17.1 + +* fix: LIMIT & OFFSET are not supported with replacing select count(*) + # 0.17.0 * feat: DBAL adapter diff --git a/packages/rekapager-doctrine-dbal-adapter/src/QueryBuilderAdapter.php b/packages/rekapager-doctrine-dbal-adapter/src/QueryBuilderAdapter.php index a88ef89..6e854aa 100644 --- a/packages/rekapager-doctrine-dbal-adapter/src/QueryBuilderAdapter.php +++ b/packages/rekapager-doctrine-dbal-adapter/src/QueryBuilderAdapter.php @@ -422,7 +422,11 @@ private function doCount( $sql = $queryBuilder->getSQL(); - if (!str_contains(strtoupper($sql), 'GROUP BY')) { + if ( + !str_contains(strtoupper($sql), ' GROUP BY ') && + !str_contains(strtoupper($sql), ' LIMIT ') && + !str_contains(strtoupper($sql), ' OFFSET ') + ) { return $this->doCountWithReplacingSelect($queryBuilder); }