在Laravel资源中使用groupBy

在Laravel资源中使用groupBy,laravel,Laravel,我想在laravel资源中使用groupBy传递一个集合,但问题是当我使用collection方法时,我无法修改json,它会抛出一个错误: PostResource: 公共功能待命($request) { 返回[ 'comments'=>CommentResource::collection($this->comments->groupBy('star')), ]; } 此集合上不存在属性[star] 但一旦我从集合中删除groupBy方法,它就会工作。那么,在使用特定键对资源进行分组时,如

我想在laravel资源中使用
groupBy
传递一个集合,但问题是当我使用
collection
方法时,我无法修改json,它会抛出一个错误:

PostResource:

公共功能待命($request)
{
返回[
'comments'=>CommentResource::collection($this->comments->groupBy('star')),
];
}
此集合上不存在属性[star]

但一旦我从集合中删除groupBy方法,它就会工作。那么,在使用特定键对资源进行分组时,如何获取和修改资源?

“您可以在创建集合后对其进行分组。”

CommentResource::collection($this->comments)->collection->groupBy('star'))

他在github上的回答符合信用标准,正如错误所说,“明星”存在吗?你试过dd($this->comments)吗?正如我所说的,当我从链中取出
groupBy
时,它会起作用,
$this->comments
返回一个集合,问题是groupBy将一个注释集合包装到
star
键中,因此资源类不知道该键(我想)也许您需要通过在
注释之后放置
()
来访问关系,而不是集合
$this->comments()->groupBy('star')->get()
@BizzyBob使用它时出错了,但json不是按任何方式分组的。@mwthrex它不会为您创建
star
键。该键必须存在于集合中,并由该键对其进行“分组”。所以星号必须存在。