2016-09-21 16 views
0

私はlaravelを初めて使っています。私は、ループ作業を使用してデータベースにチェックボックスの値を保存していますが、配列の最後の値をデータベースに保存するだけです。laravelのデータベースにチェックボックスの値を保存する

これは私のフォーム

<form action="{{url('resortf')}}" method="post" enctype="multipart/form-data"> 
      <input hidden name="h_id" value="{{ $hotel->id}}"> 
      @foreach($facility as $facilities) 
      <div class="col-md-4"> 
       <img src="{{$facilities->image}}" width="50px" height="50px;"> 
       <label>{{$facilities->name}}</label> 
       <input type="checkbox" value="{{$facilities->id}}" name="facilities[]"> 
      </div> 
      @endforeach 
      <div class="row"> 
       <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
       <input type="submit" class="btn btn-success" value="Next"> 
       <input type="reset" class="btn btn-success" value="Reset"> 
      </div> 

     </form> 

フォーム取り組んで結構です。 $facilitiesおよび$hotelがコントローラから渡されます。

これは、ストア機能

public function store(Request $request) { 
    $resortfacility = new Resortfacility; 
    $loop = $request->get('facilities'); 

    foreach ($loop as $value){ 
     $resortfacility->h_id = $request->get('h_id'); 
     $resortfacility->f_id = $value; 

     $resortfacility->save(); 

    } 
} 

が動作するこれを行うには、他の方法がありますか?あなたがResortfacilityの1つのインスタンスを作成し、あなたがその値を入力し、保存しているため

答えて

1

あなたの問題が発生します。問題は、ループ内でこのオブジェクトの変更を実行するたびに、updatingという既存のオブジェクトであることです。そのため、データベースにはループの最後のレコードが1つしかありません。

は、このようなループ内Resortfacilityの新しいインスタンスを作ってみましょう:

public function store(Request $request) { 
    $loop = $request->get('facilities'); 
    foreach ($loop as $value){ 
     $resortfacility = new Resortfacility; 
     $resortfacility->h_id = $request->get('h_id'); 
     $resortfacility->f_id = $value; 
     $resortfacility->save(); 
    } 
} 
+0

ありがとう!本当にありがとう –

0

他の答えは、foreachループ内の新しいオブジェクトを作成すると、すべてのレコードに対してクエリを行いますとバルク挿入は、役に立つかもしれません、正しいですが。働い

 public function store(Request $request) 
    { 
      $facilities = $request->get('facilities'); 
      $data=array(); 
      foreach($facilities as $facility) 
      { 
       $data[] =[ 
          'f_id' => $facility, 
          'h_id' => $request->get('h_id'), 
         ];     
      } 
     } 

Resortfacility::insert($data); 
関連する問題