2017-11-07 11 views
0

タイトルが大変残念です。私は言葉でそれを置く方法を知らない。ここでは、複数のチェックボックスがあり、値はデータベースから取得され、すべてのチェックボックスには、ユーザーが低、中、高に変更できる選択/ドロップダウンがあります。彼はそれを更新することができました。だから私の問題は、アップデートが機能していない、ドロップダウン/選択はオプションの最初の項目を返すだけです。 btw、彼は一度に複数のアイテムを実際に変更することができました。ここチェックボックス(Laravel)からアイテムを更新する

は私のhtml

<form method="post" action="{{route('allergies.update', ['id'=>Auth::user()->id])}}" enctype="multipart/form-data"> 
      <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
     @foreach($userallergens as $aller) 
         <br> 
         <input type="hidden" name="ua_id" value="{{$aller->ua_id}}"> 
         <select name="tolerance[]"> 
           <option value="Low">Low</option> 
           <option value="Medium">Medium</option> 
           <option value="High">High</option> 
         </select> 
          <label style="color:black" name="allergen[]" value="{{$aller->ua_id}}"> 
           {{ $aller->allergen_name}}</label> 
        @endforeach 
</form> 

とここに私のコントローラは

public function update2(Request $request, $id){ 
     $userid = Auth::id(); 
     $user = User::find($id); 
    for($j = 0; $j < count($request['tolerance']); $j++) { 
      $user = UserAllergen::where('ua_id',$request['ua_id']) 
           ->where('user_id', $user) 
           ->update(['tolerance_level' => $request['tolerance'][$j]]); 
      // dd($request['ua_id'],$request['tolerance'][$j]); 
      } 

return redirect()->route('user.profile', compact('id', 'user')); 
} 

答えて

0

だ、このコードを試してみてください、それはあなたを助けることを願っています。

public function update2(Request $request, $id){ 
    $user = Auth::user()->id; 
    $data = $request->all(); 
    $tolerances = $data['tolerance']; 
    foreach($tolerances as $tolerance) 
    { 
     $this->updateData($data['ua_id'], $user, $tolerance); 
    } 

    return redirect()->route('user.profile', compact('id', 'user')); 
} 

public function updateData($ua_id, $user, $tolerance_level) 
{ 
    UserAllergen::updateOrCreate(
     ['ua_id' => $ua_id, 'user_id' => $user], 
     [ 
      'tolerance_level'   => $tolerance_level 
     ] 
    ); 
} 
+0

まだ動作していますが、まだバグがあります。更新中ですが、アイテムが1つしかない場合、最初のアイテムは更新されません。 – naning14

+0

あなたは何かを逃したと思います。それは仕事でなければなりません.. –

+0

はい、それは動作しますが、リストの最初の項目は更新されません – naning14

0

複数の項目を選択するには複数属性を追加します。

<select name="tolerance[]" multiple> 
関連する問題