问题描述
请帮忙,所以我想使用 foreach 在我的控制器中使用 Eloquent 循环并将数据附加到数据库,我将解析后的数据作为数组传递:
array:3 [▼
0 => "3"
1 => "7"
2 => "9"
]
我想循环 (foreach) 并使用 attach() 将其保存到表中,这样就可以像这样一次性使用相同的 ID 保存它:
Course_ID | Facilitator_Id
--------------------------
1 | 2
1 | 3
1 | 4
--------------------------
这是刀片:
<form method="POST" action="{{ '/courses' }}" enctype="multipart/form-data">
...
<div class="form-group row">
<label class="col-3" for="fasil_id">Fasilitator</label>
<div class="col-9">
<select class="form-control @error('fasil_id') is-invalid @enderror bootstrap-select" data-style="btn-white" multiple name="fasil_id[]" selected="{{ old('fasil_id') }}" required autocomplete="fasil_id">
@foreach($facilitators as $data)
<option value="{{$data->id}}">{{$data->nama}}</option>
@endforeach
</select>
@error('fasil_id')
<span class="invalid-Feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
...
</form>
-
目前我正在使用这种方法进行循环:
foreach($request->fasil_id as $fasil_id) { Course::find($id)->facilitators()->attach([$fasil_id]); }
但是,遗憾的是我总是收到此错误:
htmlspecialchars() expects parameter 1 to be string,array given
解决方法
在您的 <select>
开始标签中,您正在设置 selected="{{ old('fasil_id') }}"
。
但由于 fasil_id
是一个数组,因此无法将其设置为 selected
值,{{ }}
无法打印它。
尝试删除 selected="{{ old('fasil_id')
。
作为旁注:
您可以将数组传递给 attach()
方法,因此您无需在此处循环。
就这样做:
Course::find($id)->facilitators()->attach($request->fasil_id);