From ea13ddfb7f29d2a1f29b1abf92874b0e001e9679 Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Mon, 30 Jan 2012 10:38:12 -0600 Subject: [PATCH] fix aggregate selecting bug. --- laravel/database/query/grammars/grammar.php | 5 +++++ laravel/database/query/grammars/sqlserver.php | 2 ++ 2 files changed, 7 insertions(+) diff --git a/laravel/database/query/grammars/grammar.php b/laravel/database/query/grammars/grammar.php index 051498dd..90c0b69b 100644 --- a/laravel/database/query/grammars/grammar.php +++ b/laravel/database/query/grammars/grammar.php @@ -75,6 +75,11 @@ final protected function concatenate($components) */ protected function selects(Query $query) { + // Sometimes developers may set a "select" clause on the same query that + // is performing in aggregate look-up, such as during pagination. So we + // will not generate the select clause if an aggregate is present. + if ( ! is_null($query->aggregate)) return; + $select = ($query->distinct) ? 'SELECT DISTINCT ' : 'SELECT '; return $select.$this->columnize($query->selects); diff --git a/laravel/database/query/grammars/sqlserver.php b/laravel/database/query/grammars/sqlserver.php index 8fb9852b..15efafed 100644 --- a/laravel/database/query/grammars/sqlserver.php +++ b/laravel/database/query/grammars/sqlserver.php @@ -44,6 +44,8 @@ public function select(Query $query) */ protected function selects(Query $query) { + if ( ! is_null($query->aggregate)) return; + $select = ($query->distinct) ? 'SELECT DISTINCT ' : 'SELECT '; // Instead of using a "LIMIT" keyword, SQL Server uses the "TOP"