Dwi Gumelar
Dwi Gumelar

Reputation: 25

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>

Upvotes: 1

Views: 2074

Answers (3)

Atif Mahmood
Atif Mahmood

Reputation: 390

i think you should use 'save' function

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

Upvotes: 1

Localhousee
Localhousee

Reputation: 912

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

Upvotes: 0

Brian Highforce Thomas
Brian Highforce Thomas

Reputation: 372

Why do not you try looping through your multiple select value and save the array's element: Like this : foreach($request->resep as $item){..then save your data here..}.

Upvotes: 1

Related Questions