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

Laravel集合格式转换求助:适配Angular的API数据结构调整

Laravel Collection 格式转换实现方案

我正在使用Laravel PHP API获取数据并传输至Angular项目,现需对Laravel Collection进行格式调整,请问是否可以实现如下转换?

当前输出

"data": [
    {
        "ID": "1",
        "JobFamilyID": "1",
        "JobFamilyCode": "BA",
        "JobFamilyName": "Business And Administrative Services",
        "MajorGroupID": "2"
    },
    {
        "ID": "",
        "JobFamilyID": "",
        "JobFamilyCode": "BA",
        "JobFamilyName": "Business And Administrative Services",
        "MajorGroupID": "2"
    }
]

期望输出

[
    {
        "JobFamilyId": "1",
        "JobFamilyName": "Business And Administrative Services"
    },
    {
        "JobFamilyId": "2",
        "JobFamilyName": "Educational Service"
    }
]

实现方案

完全可以通过Laravel集合的内置方法实现这个转换,步骤如下:

1. 筛选并重命名字段

使用map方法遍历集合,只保留需要的JobFamilyID和JobFamilyName字段,同时将键名JobFamilyID改为JobFamilyId(匹配期望输出的大小写)。

2. 去除重复条目

当前输出存在重复的JobFamilyName记录,使用unique方法根据名称或ID去重,确保最终结果无重复数据。

3. 重新索引集合

用values方法重新整理集合索引,避免出现非连续的键名。

完整代码示例

在Laravel控制器中可以这样写:

// 假设$originalData是从数据库或其他来源获取的原始集合
$formattedData = $originalData->map(function ($item) {
    return [
        'JobFamilyId' => $item['JobFamilyID'] ?? '',
        'JobFamilyName' => $item['JobFamilyName'] ?? ''
    ];
})
->unique('JobFamilyName') // 根据JobFamilyName去重,也可改用JobFamilyId
->values();

return response()->json($formattedData);

说明

  • ?? ''用于处理原数据中字段为空的情况,避免出现null值
  • 如果你的原始数据是从Eloquent模型获取的,可直接用属性访问(如$item->JobFamilyID)替代数组访问

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:25:17