📜  laravel 中的 groupby 与计数 - PHP (1)

📅  最后修改于: 2023-12-03 14:43:46.360000             🧑  作者: Mango

Laravel 中的 GroupBy 与计数

在 Laravel 中,GroupBy 是一种非常有用的数据操作方法,它允许我们根据某个字段对数据进行分组,并对每个分组进行计数统计。这种操作对于数据分析、统计和报告生成非常有用。

GroupBy 方法

在 Laravel 中,groupBy() 方法是集合(Collection)类和查询构建器(Query Builder)类中的一个常用方法。它可以根据指定字段对数据进行分组。

在集合类中使用时,可以使用以下方式对集合进行分组:

$collection = collect([
    ['name' => 'John', 'age' => 25, 'gender' => 'male'],
    ['name' => 'Jane', 'age' => 30, 'gender' => 'female'],
    ['name' => 'Tom', 'age' => 25, 'gender' => 'male'],
    ['name' => 'Lisa', 'age' => 30, 'gender' => 'female'],
]);

$grouped = $collection->groupBy('age');

$grouped->all(); // 返回分组后的集合

在查询构建器中使用时,可以使用以下方式对查询结果进行分组:

$grouped = DB::table('users')
    ->groupBy('age')
    ->get();
GroupBy 后的计数

在 GroupBy 后,我们经常需要对每个分组进行计数。在 Laravel 中,我们可以通过 count() 方法来实现计数。

对于集合类,我们可以使用以下方式对每个分组进行计数:

$collection = collect([
    ['name' => 'John', 'age' => 25, 'gender' => 'male'],
    ['name' => 'Jane', 'age' => 30, 'gender' => 'female'],
    ['name' => 'Tom', 'age' => 25, 'gender' => 'male'],
    ['name' => 'Lisa', 'age' => 30, 'gender' => 'female'],
]);

$grouped = $collection->groupBy('age')->map(function ($items) {
    return $items->count();
});

$grouped->all(); // 返回每个分组的计数

对于查询构建器,我们可以使用以下方式对每个分组进行计数:

$grouped = DB::table('users')
    ->groupBy('age')
    ->select('age', DB::raw('count(*) as total'))
    ->get();
Markdown 格式

以上代码片段已经按照 Markdown 格式展示,你可以直接将其复制到 Markdown 编辑器或文件中使用。如果你想要进一步定制样式,可以使用 Markdown 的其他特性,如标题、列表、代码块等。