多组由拉拉维尔收藏

2022-08-30 18:09:04

我试图在Laravel 5中按两个子句对集合进行分组,但它只按第一个子句对其进行分组。有人可以帮我吗?这是我的代码。

$query = Activity::all()->groupBy('performed_at_year_month', 'performer_id')->toJson();

答案 1

我认为 https://stackoverflow.com/a/30469061/221745 的解决方案可以改进。关键是要记住,分组集合是集合的集合。因此,以下方法将起作用:

<?php

$recs = new \Illuminate\Database\Eloquent\Collection($query);
$grouped = $recs->groupBy('performed_at_year_month')->transform(function($item, $k) {
    return $item->groupBy('performer_id');
});

包含最终结果的位置$grouped


答案 2

Laravel 现在(从 5.5.29 开始)支持多级嵌套分组,根据 https://christoph-rumpel.com/2018/1/groupby-multiple-levels-in-laravel

$query = Activity::all()->groupBy(['performed_at_year_month', 'performer_id'])->toJson();

推荐