Browse Source

Add count to function builder

Signed-off-by: Robin Appelman <robin@icewind.nl>
Robin Appelman 6 years ago
parent
commit
3047ef31bd

+ 4 - 0
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) . ')');
+	}
 }

+ 8 - 0
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);
 }

+ 10 - 0
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());
+	}
 }