From 3047ef31bd8b667cd6d95e133f5968a6822ff279 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 14 Jun 2018 14:32:22 +0200 Subject: [PATCH] Add count to function builder Signed-off-by: Robin Appelman --- .../QueryBuilder/FunctionBuilder/FunctionBuilder.php | 4 ++++ lib/public/DB/QueryBuilder/IFunctionBuilder.php | 8 ++++++++ tests/lib/DB/QueryBuilder/FunctionBuilderTest.php | 10 ++++++++++ 3 files changed, 22 insertions(+) diff --git a/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php b/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php index bd36797309..cf6183b023 100644 --- a/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php +++ b/lib/private/DB/QueryBuilder/FunctionBuilder/FunctionBuilder.php @@ -71,4 +71,8 @@ class FunctionBuilder implements IFunctionBuilder { public function subtract($x, $y) { return new QueryFunction($this->helper->quoteColumnName($x) . ' - ' . $this->helper->quoteColumnName($y)); } + + public function count($input) { + return new QueryFunction('COUNT(' . $this->helper->quoteColumnName($input) . ')'); + } } diff --git a/lib/public/DB/QueryBuilder/IFunctionBuilder.php b/lib/public/DB/QueryBuilder/IFunctionBuilder.php index e0e331c080..51b639028c 100644 --- a/lib/public/DB/QueryBuilder/IFunctionBuilder.php +++ b/lib/public/DB/QueryBuilder/IFunctionBuilder.php @@ -96,4 +96,12 @@ interface IFunctionBuilder { * @since 14.0.0 */ public function subtract($x, $y); + + /** + * @param mixed $input The input to be counted + * + * @return IQueryFunction + * @since 14.0.0 + */ + public function count($input); } diff --git a/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php b/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php index 1b998287c9..136650741f 100644 --- a/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php +++ b/tests/lib/DB/QueryBuilder/FunctionBuilderTest.php @@ -110,4 +110,14 @@ class FunctionBuilderTest extends TestCase { $this->assertEquals(1, $query->execute()->fetchColumn()); } + + public function testCount() { + $query = $this->connection->getQueryBuilder(); + + $query->select($query->func()->count('appid')); + $query->from('appconfig') + ->setMaxResults(1); + + $this->assertGreaterThan(1, $query->execute()->fetchColumn()); + } }