8000 Revert "[11.x] Support DB aggregate by group (new methods) (#53679)" … · laravel/framework@9085224 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9085224

Browse files
authored
Revert "[11.x] Support DB aggregate by group (new methods) (#53679)" (#54196)
This reverts commit 4b9aeae.
1 parent d53756e commit 9085224

File tree

3 files changed

+2
-153
lines changed

3 files changed

+2
-153
lines changed

src/Illuminate/Database/Query/Builder.php

Lines changed: 0 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -3561,17 +3561,6 @@ public function count($columns = '*')
35613561
return (int) $this->aggregate(__FUNCTION__, Arr::wrap($columns));
35623562
}
35633563

3564-
/**
3565-
* Retrieve the "count" of the distinct results of a given column for each group.
3566-
*
3567-
* @param \Illuminate\Contracts\Database\Query\Expression|string $columns
3568-
* @return \Illuminate\Support\Collection
3569-
*/
3570-
public function countByGroup($columns = '*')
3571-
{
3572-
return $this->aggregateByGroup('count', Arr::wrap($columns));
3573-
}
3574-
35753564
/**
35763565
* Retrieve the minimum value of a given column.
35773566
*
@@ -3583,17 +3572,6 @@ public function min($column)
35833572
return $this->aggregate(__FUNCTION__, [$column]);
35843573
}
35853574

3586-
/**
3587-
* Retrieve the minimum value of a given column by group.
3588-
*
3589-
* @param \Illuminate\Contracts\Database\Query\Expression|string $column
3590-
* @return \Illuminate\Support\Collection
3591-
*/
3592-
public function minByGroup($column)
3593-
{
3594-
return $this->aggregateByGroup('min', [$column]);
3595-
}
3596-
35973575
/**
35983576
* Retrieve the maximum value of a given column.
35993577
*
@@ -3605,17 +3583,6 @@ public function max($column)
36053583
return $this->aggregate(__FUNCTION__, [$column]);
36063584
}
36073585

3608-
/**
3609-
* Retrieve the maximum value of a given column by group.
3610-
*
3611-
* @param \Illuminate\Contracts\Database\Query\Expression|string $column
3612-
* @return \Illuminate\Support\Collection
3613-
*/
3614-
public function maxByGroup($column)
3615-
{
3616-
return $this->aggregateByGroup('max', [$column]);
3617-
}
3618-
36193586
/**
36203587
* Retrieve the sum of the values of a given column.
36213588
*
@@ -3629,17 +3596,6 @@ public function sum($column)
36293596
return $result ?: 0;
36303597
}
36313598

3632-
/**
3633-
* Retrieve the sum of the values of a given column by group.
3634-
*
3635-
* @param \Illuminate\Contracts\Database\Query\Expression|string $column
3636-
* @return \Illuminate\Support\Collection
3637-
*/
3638-
public function sumByGroup($column)
3639-
{
3640-
return $this->aggregateByGroup('sum', [$column]);
3641-
}
3642-
36433599
/**
36443600
* Retrieve the average of the values of a given column.
36453601
*
@@ -3651,17 +3607,6 @@ public function avg($column)
36513607
return $this->aggregate(__FUNCTION__, [$column]);
36523608
}
36533609

3654-
/**
3655-
* Retrieve the average of the values of a given column by group.
3656-
*
3657-
* @param \Illuminate\Contracts\Database\Query\Expression|string $column
3658-
* @return \Illuminate\Support\Collection
3659-
*/
3660-
public function avgByGroup($column)
3661-
{
3662-
return $this->aggregateByGroup('avg', [$column]);
3663-
}
3664-
36653610
/**
36663611
* Alias for the "avg" method.
36673612
*
@@ -3692,21 +3637,6 @@ public function aggregate($function, $columns = ['*'])
36923637
}
36933638
}
36943639

3695-
/**
3696-
* Execute an aggregate function for each group.
3697-
*
3698-
* @param string $function
3699-
* @param array $columns
3700-
* @return \Illuminate\Support\Collection
3701-
*/
3702-
public function aggregateByGroup(string $function, array $columns = ['*'])
3703-
{
3704-
return $this->cloneWithout($this->unions || $this->havings ? [] : ['columns'])
3705-
->cloneWithoutBindings($this->unions || $this->havings ? [] : ['select'])
3706-
->setAggregate($function, $columns)
3707-
->get($columns);
3708-
}
3709-
37103640
/**
37113641
* Execute a numeric aggregate function on the database.
37123642
*

src/Illuminate/Database/Query/Grammars/Grammar.php

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -139,15 +139,7 @@ protected function compileAggregate(Builder $query, $aggregate)
139139
$column = 'distinct '.$column;
140140
}
141141

142-
$sql = 'select ';
143-
144-
$sql .= $aggregate['function'].'('.$column.') as aggregate';
145-
146-
if ($query->groups) {
147-
$sql .= ', '.$this->columnize($query->groups);
148-
}
149-
150-
return $sql;
142+
return 'select '.$aggregate['function'].'('.$column.') as aggregate';
151143
}
152144

153145
/**
@@ -1139,12 +1131,10 @@ protected function wrapUnion($sql)
11391131
protected function compileUnionAggregate(Builder $query)
11401132
{
11411133
$sql = $this->compileAggregate($query, $query->aggregate);
1142-
$groups = $query->groups ? ' '.$this->compileGroups($query, $query->groups) : '';
11431134

11441135
$query->aggregate = null;
1145-
$query->groups = null;
11461136

1147-
return $sql.' from ('.$this->compileSelect($query).') as '.$this->wrapTable('temp_table').$groups;
1137+
return $sql.' from ('.$this->compileSelect($query).') as '.$this->wrapTable('temp_table');
11481138
}
11491139

11501140
/**

tests/Database/DatabaseQueryBuilderTest.php

Li 10000 nes changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
use Illuminate\Pagination\Cursor;
2626
use Illuminate\Pagination\CursorPaginator;
2727
use Illuminate\Pagination\LengthAwarePaginator;
28-
use Illuminate\Support\Collection;
2928
use Illuminate\Tests\Database\Fixtures\Enums\Bar;
3029
use InvalidArgumentException;
3130
use Mockery as m;
@@ -1805,38 +1804,6 @@ public function testGroupBys()
18051804
$this->assertEquals(['whereRawBinding', 'groupByRawBinding', 'havingRawBinding'], $builder->getBindings());
18061805
}
18071806

1808-
public function testAggregateByGroup()
1809-
{
1810-
$builder = $this->getBuilder();
1811-
1812-
$queryResults = [['aggregate' => 2, 'role' => 'admin', 'city' => 'NY'], ['aggregate' => 5, 'role' => 'user', 'city' => 'LA']];
1813-
$builder->getConnection()
1814-
->shouldReceive('select')->once()
1815-
->with('select count(*) as aggregate, "role", "city" from "users" group by "role", "city"', [], true)
1816-
->andReturn($queryResults);
1817-
$builder->getProcessor()->shouldReceive('processSelect')->once()->andReturnUsing(fn ($builder, $results) => $results);
1818-
$builder->from('users')->groupBy('role', 'city');
1819-
$builder->aggregate = ['function' => 'count', 'columns' => ['*']];
1820-
$results = $builder->get();
1821-
$this->assertEquals($queryResults, $results->toArray());
1822-
}
1823-
1824-
public function testUnionAndAggregateByGroup()
1825-
{
1826-
$builder = $this->getBuilder();
1827-
1828-
$queryResults = [['aggregate' => 2, 'role' => 'admin'], ['aggregate' => 5, 'role' => 'user']];
1829-
$builder->getConnection()
1830-
->shouldReceive('select')->once()
1831-
->with('select count(*) as aggregate, "role" from ((select * from "users") union (select * from "members")) as "temp_table" group by "role"', [], true)
1832-
->andReturn($queryResults);
1833-
$builder->getProcessor()->shouldReceive('processSelect')->once()->andReturnUsing(fn ($builder, $results) => $results);
1834-
$results = $builder->from('users')
1835-
->union($this->getBuilder()->select('*')- EED3 >from('members'))
1836-
->groupBy('role')->aggregateByGroup('count');
1837-
$this->assertEquals($queryResults, $results->toArray());
1838-
}
1839-
18401807
public function testOrderBys()
18411808
{
18421809
$builder = $this->getBuilder();
@@ -3497,44 +3464,6 @@ public function testAggregateFunctions()
34973464
$this->assertEquals(1, $results);
34983465
}
34993466

3500-
public function testAggregateFunctionsWithGroupBy()
3501-
{
3502-
$builder = $this->getBuilder();
3503-
$builder->getConnection()->shouldReceive('select')->once()->with('select count(*) as aggregate, "role" from "users" group by "role"', [], true)->andReturn([['role' => 'admin', 'aggregate' => 1]]);
3504-
$builder->getProcessor()->shouldReceive('processSelect')->once()->andReturnUsing(fn ($builder, $results) => $results);
3505-
$results = $builder->from('users')->groupBy('role')->countByGroup();
3506-
$this->assertInstanceOf(Collection::class, $results);
3507-
$this->assertEquals([['role' => 'admin', 'aggregate' => 1]], $results->toArray());
3508-
3509-
$builder = $this->getBuilder();
3510-
$builder->getConnection()->shouldReceive('select')->once()->with('select max("id") as aggregate, "role" from "users" group by "role"', [], true)->andReturn([['role' => 'admin', 'aggregate' => 1]]);
3511-
$builder->getProcessor()->shouldReceive('processSelect')->once()->andReturnUsing(fn ($builder, $results) => $results);
3512-
$results = $builder->from('users')->groupBy('role')->maxByGroup('id');
3513-
$this->assertInstanceOf(Collection::class, $results);
3514-
$this->assertEquals([['role' => 'admin', 'aggregate' => 1]], $results->toArray());
3515-
3516-
$builder = $this->getBuilder();
3517-
$builder->getConnection()->shouldReceive('select')->once()->with('select min("id") as aggregate, "role" from "users" group by "role"', [], true)->andReturn([['role' => 'admin', 'aggregate' => 1]]);
3518-
$builder->getProcessor()->shouldReceive('processSelect')->once()->andReturnUsing(fn ($builder, $results) => $results);
3519-
$results = $builder->from('users')->groupBy('role')->minByGroup('id');
3520-
$this->assertInstanceOf(Collection::class, $results);
3521-
$this->assertEquals([['role' => 'admin', 'aggregate' => 1]], $results->toArray());
3522-
3523-
$builder = $this->getBuilder();
3524-
$builder->getConnection()->shouldReceive('select')->once()->with('select sum("id") as aggregate, "role" from "users" group by "role"', [], true)->andReturn([['role' => 'admin', 'aggregate' => 1]]);
3525-
$builder->getProcessor()->shouldReceive('processSelect')->once()->andReturnUsing(fn ($builder, $results) => $results);
3526-
$results = $builder->from('users')->groupBy('role')->sumByGroup('id');
3527-
$this->assertInstanceOf(Collection::class, $results);
3528-
$this->assertEquals([['role' => 'admin', 'aggregate' => 1]], $results->toArray());
3529-
3530-
$builder = $this->getBuilder();
3531-
$builder->getConnection()->shouldReceive('select')->once()->with('select avg("id") as aggregate, "role" from "users" group by "role"', [], true)->andReturn([['role' => 'admin', 'aggregate' => 1]]);
3532-
$builder->getProcessor()->shouldReceive('processSelect')->once()->andReturnUsing(fn ($builder, $results) => $results);
3533-
$results = $builder->from('users')->groupBy('role')->avgByGroup('id');
3534-
$this->assertInstanceOf(Collection::class, $results);
3535-
$this->assertEquals([['role' => 'admin', 'aggregate' => 1]], $results->toArray());
3536-
}
3537-
35383467
public function testSqlServerExists()
35393468
{
35403469
$builder = $this->getSqlServerBuilder();

0 commit comments

Comments
 (0)
0