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

Laravel中如何正确向JSON添加2个字段实现两组数据同时存入数据库

问题原因

  1. 控制器遍历逻辑错误:request('nif', 'name')实际返回的是['nif' => 前端传入的nif数组, 'name' => 前端传入的name数组],你遍历这个数组时拿到的$val分别是完整的nif数组、完整的name数组,直接赋值给字段自然会出现值错乱。
  2. 模型的getRepeatedFields方法存在逻辑错误:方法内连续写了两个return,第二个return json_decode($this->name);永远不会被执行。
  3. 额外HTML规范问题:前端模板中多个input使用了相同的id属性,不符合HTML规范,如有JS操作需求建议修改为唯一id。

修复方案

1. 修复控制器store方法

你需要按数组下标匹配同组的nif和name,还可以用批量插入避免多次调用create,符合你的设计要求:

public function store(Request $request)
{
    // 先验证字段是否存在,且两个数组长度一致
    $validated = $request->validate([
        'nif' => 'required|array',
        'name' => 'required|array',
        'nif.*' => 'required|string',
        'name.*' => 'required|string'
    ]);

    $insertData = [];
    // 按下标匹配同组的nif和name
    foreach ($validated['nif'] as $index => $nifVal) {
        $insertData[] = [
            'nif' => $nifVal,
            'name' => $validated['name'][$index],
            // 如果表有自动维护的时间字段,手动加上即可
            'created_at' => now(),
            'updated_at' => now()
        ];
    }

    // 批量插入,仅调用一次数据库操作
    EnviarCurriculum::insert($insertData);
}

2. 修复模型的getRepeatedFields方法

如果你需要同时返回两个字段的解析结果,可以返回数组:

public function getRepeatedFields()
{
    return [
        'nif' => json_decode($this->nif),
        'name' => json_decode($this->name)
    ];
}

如果你的场景不需要JSON解析,也可以直接返回原始值,自行调整逻辑即可。

内容的提问来源于stack exchange,提问作者El conde Lucanor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:39:03