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

Laravel中如何提交同名字段表单并向数据库插入多条数据

问题根源

你当前两个下拉框都使用了相同的数组名ki_kd_id[],表单提交后后端拿到的$request->ki_kd_id是长度为2的数组,偶数索引对应Kompetensi Dasar的选中值,奇数索引对应Kompetensi Inti的选中值。你原有逻辑中每条mapel记录仅取ki_kd_id的一个索引值,会出现值不匹配或者漏存的问题。

解决方案

根据你的业务需求选择对应方案即可:

方案1:每条mapel记录同时关联KD和KI

如果你的业务逻辑要求单条课程记录同时绑定核心能力(KI)和基础能力(KD),按以下步骤修改:

  • 调整数据表结构,新增ki_id字段,将原有ki_kd_id字段重命名为kd_id,调整后表结构如下:
    id | nama_mapel | guru_id | kode_mapel | kd_id | ki_id
  • 修改视图层下拉框命名,区分两个选择器:
    <!-- 原选择Kompetensi Dasar的下拉框 -->
    <select name="kd_id[]">
     <option value disable>Pilih Kompetensi Dasar</option>
        @foreach ($komp_dasar as $kd)
          <option value="{{ $kd->id }}">{{ $kd->kompetensi }}</option>
        @endforeach
    </select>
    
    <!-- 原选择Kompetensi Inti的下拉框 -->
    <select type="text" name="ki_id[]">
       <option value disable>Pilih Kompetensi Inti</option>
         @foreach ($komp_inti as $ki)
           <option value="{{ $ki->id }}">{{ $ki->kompetensi }}</option>
         @endforeach
    </select>
    
  • 修改控制器存储逻辑:
    public function store(Request $request)
    {
        $nama_mapel = $request->nama_mapel;
        $guru_id = $request->guru_id;
        $kode_mapel = $request->kode_mapel;
        $kd_id = $request->kd_id;
        $ki_id = $request->ki_id;
    
        foreach ($nama_mapel as $row => $key){
          $data= [
            'nama_mapel' => $nama_mapel[$row],
            'guru_id' => $guru_id[$row],
            'kode_mapel' => $kode_mapel[$row],
            'kd_id' => $kd_id[$row],
            'ki_id' => $ki_id[$row],
          ];
          DB::table('mapel')->insert($data);
        }
        return redirect()->back();
    }
    

方案2:KD和KI分别作为独立的mapel记录存储

如果你的业务逻辑要求KD和KI各自作为一条独立的课程记录存储,不需要修改表结构和视图代码,直接调整控制器逻辑即可:

public function store(Request $request)
{
    $nama_mapel = $request->nama_mapel;
    $guru_id = $request->guru_id;
    $kode_mapel = $request->kode_mapel;
    $ki_kd_id = $request->ki_kd_id;

    foreach ($nama_mapel as $row => $key){
      // 存储Kompetensi Dasar记录
      DB::table('mapel')->insert([
        'nama_mapel' => $nama_mapel[$row],
        'guru_id' => $guru_id[$row],
        'kode_mapel' => $kode_mapel[$row],
        'ki_kd_id' => $ki_kd_id[$row * 2],
      ]);
      // 存储Kompetensi Inti记录
      DB::table('mapel')->insert([
        'nama_mapel' => $nama_mapel[$row],
        'guru_id' => $guru_id[$row],
        'kode_mapel' => $kode_mapel[$row],
        'ki_kd_id' => $ki_kd_id[$row * 2 + 1],
      ]);
    }
    return redirect()->back();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 02:24:08