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

如何结合嵌套关联数组与pluck方法实现指定结构转换?

Laravel 集合转换:扁平结构转嵌套键值对

当前代码及输出

执行以下代码:

Model1::all()
  ->map()
  ->only(['c1', 'c2', 'c3'])

得到的扁平集合结果:

[
  { "c1": "v11", "c2": "v21a", "c3": "v31a" },
  { "c1": "v11", "c2": "v21b", "c3": "v31b" },
  { "c1": "v12", "c2": "v22a", "c3": "v32a" }
]

期望输出结构

需要将上述集合转换为以下嵌套键值对结构:

{
  "v11": {
    "v21a": "v31a",
    "v21b": "v31b"
  },
  "v12": {
    "v22a": "v32a"
  }
}

解决方案

经过尝试,最终通过以下代码实现需求:

Model1::all()
  ->map()
  ->only(['c1', 'c2', 'c3'])
  ->groupBy('c1')
  ->map(fn($item) => $item->pluck('c3', 'c2'))

代码逻辑说明

  • groupBy('c1'):以c1字段的值为分组依据,将原集合拆分为以v11、v12为键的分组集合
  • map(fn($item) => $item->pluck('c3', 'c2')):遍历每个分组集合,用pluck('c3', 'c2')将分组内的c2作为键、c3作为值,生成对应关联数组,最终组合成目标嵌套结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:27:31