Search code examples
laravellaravel-8laravel-7

how to save multiple select in laravel 8?


how to save multiple selcet in laravel when I try the script below, not to save enter image description here

this store in controller

 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);
}

this is code in view

          <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>

Solution

  • Well, u can modify your array first before save it to database. I assume your resep column type is varchar. Here's my solution

    $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 function is to convert $resep array to string. You can change it back to array with json_decode function

    json_decode($resep);