【发布时间】:2021-11-22 16:27:00
【问题描述】:
我的目标是检索用户的所有“项目”,然后按他们的“状态”分组显示在我的视图中。有 4 种可能的状态,每种状态在包含项目信息的页面上都有自己的<div>。经过一番摸索,我相信我需要像这样使用groupBy() 方法:
$items = Item::ownedBy( Auth::id() )->groupBy('status')->get();
这似乎确实进行了某种分组,但是当我遍历集合时,我最多得到 4 个结果,每个状态一个。这并不能真正解决我的问题,因为我需要显示每个状态的所有用户项目,而不仅仅是一个。我必须在这里遗漏一些东西,我真的很想避免对每个状态进行查询并以这种方式显示它们。我想我可以按状态过滤集合并创建 4 个新集合,但这不是 groupBy() 应该做的吗?
【问题讨论】:
-
SQL
GROUP BY status将所有具有相同status的行聚合到一行中,所以这不是您想要的。 -
谢谢@ceejayoz 我有一种感觉,我可能会走错路。那么,过滤成 4 个不同的集合/数组会是最佳做法吗?
标签: php laravel group-by laravel-collection