diff --git a/src/Query/SelectQuery.php b/src/Query/SelectQuery.php index 818dd6de..92ce213a 100644 --- a/src/Query/SelectQuery.php +++ b/src/Query/SelectQuery.php @@ -326,12 +326,14 @@ public function runChunks(int $limit, callable $callback): void * * @psalm-param non-empty-string $column Column to count by (every column by default). */ - public function count(string $column = '*'): int + public function count(string $column = '*', bool $distinct = false): int { $select = clone $this; //To be escaped in compiler - $select->columns = ["COUNT({$column})"]; + $select->columns = [ + $distinct === true ? "COUNT(DISTINCT({$column}))" : "COUNT({$column})", + ]; $select->orderBy = []; $select->groupBy = []; diff --git a/tests/Database/Functional/Driver/Common/Schema/TableTest.php b/tests/Database/Functional/Driver/Common/Schema/TableTest.php index 575dbf68..b0edebac 100644 --- a/tests/Database/Functional/Driver/Common/Schema/TableTest.php +++ b/tests/Database/Functional/Driver/Common/Schema/TableTest.php @@ -495,6 +495,7 @@ public function testCountDistinct(): void ], ); + $this->assertSame(4, $table->select()->count('id', true)); $this->assertSame(4, $table->select()->count('DISTINCT(id)')); }