0

我的目标是检索所有用户的“项目”,然后按他们的“状态”分组显示在我的视图中。<div>有 4 种可能的状态,每种状态在包含项目信息的页面上都有自己的状态。经过一番摸索,我相信我需要使用这样的groupBy()方法:

$items = Item::ownedBy( Auth::id() )->groupBy('status')->get();

这似乎确实进行了某种分组,但是当我遍历集合时,我最多得到 4 个结果,每个状态一个。这并不能真正解决我的问题,因为我需要显示每个状态的所有用户项目,而不仅仅是一个。我必须在这里遗漏一些东西,我真的很想避免对每个状态进行查询并以这种方式显示它们。我想我可以按状态过滤集合并创建 4 个新集合,但这不是groupBy()应该做的吗?

4

1 回答 1

6

你可以使用 laravel 和 Collections 轻松做到这一点。Collections 有强大的 API 和很多方便的方法,可以轻松实现你想要的。

您的错误是您在 QueryBuilder 对象上调用 groupBy ,该对象仅返回按数据库中的记录分组。相反,您必须选择所有需要的记录,然后它们将作为集合返回。之后,您可以根据需要操作集合。所以你需要的是:

$items = Item::ownedBy( Auth::id() )->get()->groupBy('status');

你可以在这里查看Colletion 类的所有有用方法。

于 2015-05-21T05:19:04.370 回答