【问题标题】:how to save multiple select in laravel 8?如何在 laravel 8 中保存多项选择?
【发布时间】:2021-07-19 12:10:45
【问题描述】:

当我尝试下面的脚本时如何在 laravel 中保存多个选择,而不是保存

控制器中的这个商店

 public function store(Request $request)
{
  $id = $request->id;
  $post   =   Rek_medik::updateOrCreate(['id' => $id],
              [
                  'kode_rekmed' => $request->kode_rekmed,
                  'kode_register' => $request->kode_register,
                  'kode_pasien' => $request->kode_pasien,
                  'nama_pemeriksa' => $request->nama_pemeriksa,
                  'tgl_rekmed' => Carbon::now(),
                  'anamnesis' => $request->anamnesis,
                  'pemeriksaan' => $request->pemeriksaan,
                  'resep' => $request->resep,
              ]);

  return response()->json($post);
}

这是视图中的代码

          <div class="form-group">
        <label for="resep">Resep</label>
        <select class="select2bs4"  id="resep" multiple="multiple" name="resep[]" data-placeholder="Select a State"
                style="width: 100%;">
          @foreach($obat as $row)
            <option value="{{$row->kd_obat }}" >{{$row->kd_obat }}</option>
          @endforeach
        </select>
      </div>

【问题讨论】:

    标签: laravel laravel-8 laravel-7


    【解决方案1】:

    你为什么不尝试循环遍历你的多选值并保存数组的元素:像这样:foreach($request-&gt;resep as $item){..then save your data here..}

    【讨论】:

    • 它不起作用,因为它保存到2行输入列而不是1输入行,我怎么能是一行?
    • 将您的 resep 列数据类型更改为接受数组或对象的类型。我确信这会将 $request-&gt;resep 保存在一行中
    【解决方案2】:

    我认为你应该使用“保存”功能

    public function store(Request $request)
    {
       $id = $request->id;
       $post   =   Rek_medik::updateOrCreate(['id' => $id],
              [
                  'kode_rekmed' => $request->kode_rekmed,
                  'kode_register' => $request->kode_register,
                  'kode_pasien' => $request->kode_pasien,
                  'nama_pemeriksa' => $request->nama_pemeriksa,
                  'tgl_rekmed' => Carbon::now(),
                  'anamnesis' => $request->anamnesis,
                  'pemeriksaan' => $request->pemeriksaan,
                  'resep' => $request->resep,
              ]);
        $result = $post->save();
    
       return response()->json($post);
    }
    

    【讨论】:

      【解决方案3】:

      好吧,您可以先修改您的数组,然后再将其保存到数据库。我假设您的 resep 列类型是 varchar。这是我的解决方案

      $id = $request->id;
      foreach($request->resep[] as $r){
          $resep[] = $r;
      }
      $post = Rek_medik::updateOrCreate(['id' => $id],
                [
                    'kode_rekmed' => $request->kode_rekmed,
                    'kode_register' => $request->kode_register,
                    'kode_pasien' => $request->kode_pasien,
                    'nama_pemeriksa' => $request->nama_pemeriksa,
                    'tgl_rekmed' => Carbon::now(),
                    'anamnesis' => $request->anamnesis,
                    'pemeriksaan' => $request->pemeriksaan,
                    'resep' => json_encode($resep),
                ]);
      
      return response()->json($post);
      

      json_encode 函数是将 $resep 数组转换为字符串。您可以使用 json_decode 函数将其更改回数组

      json_decode($resep);
      

      【讨论】:

      • 这有效,但我不使用 foreach 仍然有效,只需编辑 resep 'resep' => $request->resep, to 'resep' => json_encode($resep),
      猜你喜欢
      • 1970-01-01
      • 2021-06-22
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2021-12-15
      • 2018-10-28
      • 2019-06-18
      • 2021-09-04
      相关资源
      最近更新 更多