如何解决Laravel 7 - 如何将请求数组循环到控制器以使用 eloquent 附加数据
请帮忙,所以我想使用 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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。