未定义的索引:回答

问题描述 投票:0回答:1

我想使用数组将多个数据输入到数据库,但是我收到了一条错误消息。代码如下:

ClusterController

$jawaban = $request->jawaban;

$data = [];
if($jawaban != null || $jawaban == false){
  for($i=1; $i<=count($jawaban['jawaban']); $i++){
     $data[] = array('jawaban' => $jawaban[$i]['jawaban']);
  }

  $store = Soal::where('cluster_id', $id)->update($data);
  return dd($store);
}

showexam.blade.php

    <form action="/jawaban/store/{{$model[$i]->id}}" method="post" enctype="multipart/form-data"> 
    @csrf
        <table id="datatable" style="width:100%">
        <tbody>           
            <tr>{{$i+1}}. </tr>
            <tr>{{$model[$i]->soal}}</tr>
            <ol type="A" style="">
                <li> {{$model[$i]->A}}</li>
                <li> {{$model[$i]->B}}</li>
                <li> {{$model[$i]->C}}</li>
                <li> {{$model[$i]->D}}</li>
                <li> {{$model[$i]->E}}</li>
            </ol>
            <input list="browsers" name="jawaban[]">
            <datalist id="browsers">
              <option value="A">
              <option value="B">
              <option value="C">
              <option value="D">
              <option value="E">
            </datalist>
        @endfor
            <button type="submit" class="btn btn-primary text-right" id="modal-btn-save">Done</button>
    </form>

screenshot

php arrays database laravel loops
1个回答
0
投票

count($jawaban['jawaban'])

您已经使用$jawaban = $request->jawaban;检索了一个名为jabawan的数组

jabawan将有一个正常的计数阵列$jabawan = ['A', 'B']

它不会有一个名为jabawan的索引。

如果你做过类似的事情

$jabawan = post();

您可以使用您的代码,但您可以使用

for($i=0; $i<count($jawaban); $i++){
   $data[] = array('jawaban' => $jawaban[$i]);
}

改变Soal::where('cluster_id', $id)->update($data);

if ($soal_model = Soal::find( $id )) {
   $soal_model->update($data);
}

问题是你永远不会在查询对象上调用get(),或者在first()返回的集合上调用get()

通过使用find()您可以返回一个对象,如果它不存在则返回null。通过将其包装在if语句中,更新将仅在现有对象上执行,从而防止在尝试更新空值时出错。

此外,你不能返回dd()

dd代表'转储和死亡'我相信,至少这是我读到它,因为它就是它的作用。

它会转储数据,然后终止进程。因此,在你的dd()通话后,所有的laravel返回处理程序都不会被调用。你杀了这个过程。

© www.soinside.com 2019 - 2024. All rights reserved.