如何在 laravel 8 中保存多项选择?

Posted

技术标签:

【中文标题】如何在 laravel 8 中保存多项选择?【英文标题】:how to save multiple select in 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>

【问题讨论】:

【参考方案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),

以上是关于如何在 laravel 8 中保存多项选择?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 8 中保存嵌套的下拉菜单

当尚未在编辑表单中选择图像时,如何默认使用当前图像更新帖子。我正在使用 laravel 8

如何在 Laravel 8 中使用 foreach 从多选中保存数据?

PHP - Laravel:如何在数据库中保存时间而不重叠

如何使用 laravel 8 同时保存一对多关系数据

如何在laravel中保存多个文件