From 780f2d2b1645f876731e5f6f53958f9d1e4671f4 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Tue, 29 May 2012 10:03:22 +1200 Subject: [PATCH] API CHANGE: Added DataQuery::aggregate() to allow for aggregates beyond Min, Max, Avg, Sum. --- model/DataQuery.php | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/model/DataQuery.php b/model/DataQuery.php index 2e5c66866..92272b44b 100644 --- a/model/DataQuery.php +++ b/model/DataQuery.php @@ -326,8 +326,8 @@ class DataQuery { * * @param String $field Unquoted database column name (will be escaped automatically) */ - function max($field) { - return $this->getFinalisedQuery()->aggregate(sprintf('MAX("%s")', Convert::raw2sql($field)))->execute()->value(); +function max($field) { + return $this->aggregate(sprintf('MAX("%s")', Convert::raw2sql($field))); } /** @@ -336,7 +336,7 @@ class DataQuery { * @param String $field Unquoted database column name (will be escaped automatically) */ function min($field) { - return $this->getFinalisedQuery()->aggregate(sprintf('MIN("%s")', Convert::raw2sql($field)))->execute()->value(); + return $this->aggregate(sprintf('MIN("%s")', Convert::raw2sql($field))); } /** @@ -345,7 +345,7 @@ class DataQuery { * @param String $field Unquoted database column name (will be escaped automatically) */ function avg($field) { - return $this->getFinalisedQuery()->aggregate(sprintf('AVG("%s")', Convert::raw2sql($field)))->execute()->value(); + return $this->aggregate(sprintf('AVG("%s")', Convert::raw2sql($field))); } /** @@ -354,7 +354,14 @@ class DataQuery { * @param String $field Unquoted database column name (will be escaped automatically) */ function sum($field) { - return $this->getFinalisedQuery()->aggregate(sprintf('SUM("%s")', Convert::raw2sql($field)))->execute()->value(); + return $this->aggregate(sprintf('SUM("%s")', Convert::raw2sql($field))); + } + + /** + * Runs a raw aggregate expression. Please handle escaping yourself + */ + function aggregate($expression) { + return $this->getFinalisedQuery()->aggregate($expression)->execute()->value(); } /**