如何在 foreach laravel 中使用值为 0 和 1 的复选框

How to use checkbox with value 0 and 1 in foreach laravel

我想输入值为 0 和 1 的复选框,如果我选中值 1,如果没有选中值 0。

my code in View

@foreach($criteria as $data)
    <table>
       <tr>
           <td class="col-4">
              <input type="hidden" name="criteria_id[]" value="{{ $data->id }}">
              { $data->criteria_name}} : 
           </td><br>
           <td class="col-2">
              <input type="hidden" class="form-control" name="score[]" value="0">
              <input type="checkbox" class="form-control" name="score[]" value="1">
           </td>
       </tr>
    </table>
@endforeach

我在控制器中的代码

for ($i=0; $i < count($request->criteria_id) ; $i++) { 
       $score_detail[] = [
       //$detail_score               = new DetailScoreModel(),
       'score_id'      => $getscoreid->id,
       'criteria_id'   => $request->criteria_id[$i],
       'score'         => $request->score[$i],
       'description'   => $request->description[$i]
    ];
}

为什么数据库中的结果不匹配?

正确的结果应该是1,1,0,1,1,0,1,1,1,1 但是存储的数据是0,1,0,1,0,1,0,1, 0,1

您需要将criteria_id设置为得分键。并删除分数的隐藏输入。

您的看法,

  @foreach($criteria as $data)
      <table>
         <tr>
             <td class="col-4">
                <input type="hidden" name="criteria_id[]" value="{{ $data->id }}">
                { $data->criteria_name}} : 
             </td><br>
             <td class="col-2">
                <input type="checkbox" class="form-control" name="score[{{ $data->id }}]" value="1">
             </td>
         </tr>
      </table>
  @endforeach

你的控制器,现在根据下面的 criteria_id 检查分数是否存在。

  $criteria_ids = $request->criteria_id;

  foreach ($criteria_ids as $i => $criteria_id) {
     $score_detail[] = [
        'score_id'      => $getscoreid->id,
        'criteria_id'   => $criteria_id,
        'score'         => isset($request->score[$criteria_id]) ? 1 : 0,
        'description'   => $request->description[$i]
     ];
  }