You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何过滤Laravel Collection,获取各perm_id对应最大id的记录

Laravel Collection按指定属性分组并保留每组最大值项

当然可以实现你的需求,下面提供两种简洁的方法来处理这个Laravel集合:

方法一:先排序再去重

通过先按id降序排序,让每个perm_id对应的最大id项排在最前面,再按perm_id去重,就能直接得到目标结果:

// 假设你的集合实例为$collection
$filteredCollection = $collection->sortByDesc('id')
    ->unique('perm_id')
    ->values();
  • sortByDesc('id'):将集合按id从大到小排序
  • unique('perm_id'):保留每个perm_id第一次出现的项(此时就是该组id最大的项)
  • values():重置集合的键名,使其从0开始连续编号

方法二:分组后提取每组最大值

先按perm_id分组,再在每个分组内筛选出id最大的项:

$filteredCollection = $collection->groupBy('perm_id')
    ->map(function ($group) {
        // 对每个分组按id降序排序后取第一个(最大id项)
        return $group->sortByDesc('id')->first();
    })
    ->values();
  • groupBy('perm_id'):将集合按perm_id分组,每个分组是对应perm_id的所有项
  • map():遍历每个分组,筛选出该组内id最大的项
  • values():同样用于重置键名

两种方法最终都会得到你预期的结果:

[
  {
    "id": 10,
    "perm_id": 2
  },
  {
    "id": 9,
    "perm_id": 1  
  }
]

内容的提问来源于stack exchange,提问作者prakashchhetri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:05:19