首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Laravel中按特定字段分组?

如何在Laravel中按特定字段分组?
EN

Stack Overflow用户
提问于 2018-12-20 03:07:04
回答 1查看 76关注 0票数 0

这是Book表

代码语言:javascript
复制
{ "_id" : 8751, "title" : "The Banquet", "author" : "Dante", "copies" : 2 }
{ "_id" : 8752, "title" : "Divine Comedy", "author" : "Dante", "copies" : 1 
}
{ "_id" : 8645, "title" : "Eclogues", "author" : "Dante", "copies" : 2 }
{ "_id" : 7000, "title" : "The Odyssey", "author" : "Homer", "copies" : 10 }
{ "_id" : 7020, "title" : "Iliad", "author" : "Homer", "copies" : 10 }

我将使用Laravel Eloquent ORM得到这个结果。

代码语言:javascript
复制
{ "author" : "Homer", "books" : [ "The Odyssey", "Iliad" ] }
{ "author" : "Dante", "books" : [ "The Banquet", "Divine Comedy", "Eclogues" 
] }

我该怎么做呢?请帮帮我。

EN

回答 1

Stack Overflow用户

发布于 2018-12-20 03:14:54

如果$booksCollection的实例,请尝试此代码

代码语言:javascript
复制
$collection = collect([
    [
        "title" => "The Banquet",
        "author" => "Dante",
        "copies" => 2
    ],
    [
        "title" => "Divine Comedy",
        "author" => "Dante",
        "copies" => 1
    ],
    [
        "title" => "The Odyssey",
        "author" => "Homer",
        "copies" => 10
    ]
]);

$result = [];

foreach($collection->groupBy('author') as $author => $books) {
    $data['author'] = $author;
    $data['books'] = $books->pluck('title')->all();
    $result[] = $data;
}
dd(json_encode($result));

结果是

代码语言:javascript
复制
[{"author":"Dante","books":["The Banquet","Divine Comedy"]},{"author":"Homer","books":["The Odyssey"]}]

感谢@xyingsoft提供的采集数据

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53857712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档