Laravel-Groupby并合并另一列

时间:2018-06-29 18:47:36

标签: php arrays laravel collections eloquent

enter image description here

我有一个这样的集合,当我执行groupBy('name')时,它会像这样返回

enter image description here

我的问题是执行groupBy('name')时如何合并“ id_area”键? 预期的结果更像这样

"name" => "A"
"id_area" => [3, 1]

我雄辩的代码是

$x = Kegiatan::orderBy('name')->groupBy('name')->get();

$y = $x->map(function ($group) {
   return ["name" => $group->name, "id_area" => $group->id_area];
});

dd($y);

1 个答案:

答案 0 :(得分:0)

不要使用查询构建器的groupBy()方法,而只是获取数据,然后使用Illuminate\Support\Collection类的groupBy()方法

$collection = Kegiatan::orderBy('name')->get();
$grouped = $collection->groupBy('name');
$grouped->toArray();

在查询生成器上使用groupBy()可以按数据库查询对记录进行分组,而使用集合的groupBy()可以在通过查询获取数据后对记录进行分组