我想使用数组将多个数据输入到数据库,但是我收到了一条错误消息。代码如下:
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>
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返回处理程序都不会被调用。你杀了这个过程。