gpt4 book ai didi

php - Laravel GroupBy 的使用

转载 作者:行者123 更新时间:2023-12-01 19:39:01 24 4
gpt4 key购买 nike

我正在尝试按 cat_id 对表中的数据进行分组,并将结果转换为 JSON。

表结构

id  name  cat_id   
1 A 2
2 B 1
3 C 2
4 D 2
5 E 3
6 F 2
7 G 1

这是我尝试过的代码

$posts = Posts::groupBy('cat_id')->get();

return $posts->toJson();

结果应如下所示:

[
{
"id": "1", //cat_id
"posts": [
{
"id": "2", //user id
"s": "B" //name
},
{
"id": "7",
"s": "G"
}
]
},
{
"id": "2", //cat id
"posts": [
{
"id": "1",
"name": "A"
},
{
"id": "3",
"name": "C"
},
{
"id": "4",
"s": "D"
},
{
"id": "6",
"s": "F"
}
]
}
]

但是我收到Call to a member function toJson() on a non-object。我哪里做错了?

最佳答案

不幸的是groupBy不能像这样工作。它更像是 SQL GROUP BY(实际上这就是它在后台执行的操作...)

我认为您的错误来自于它不知道如何处理 nameid 因为您总是需要使用 GROUP BY 聚合字段.

现在您可以通过以下方法实现您的目标。我假设您已经设置了 CategoryPost 之间的关系。有点像这样:

class Category extends Eloquent {
public function posts(){
return $this->hasMany('Post', 'cat_id');
}
}

然后你可以这样做:

$categories = Category::with('posts')->get();

您将获得包含其帖子的所有类别。 toJson() 应该也可以正常工作。

关于php - Laravel GroupBy 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27521121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com