微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Laravel 7 - 如何将请求数组循环到控制器以使用 eloquent 附加数据

如何解决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>
  • 我在标记属性中使用了 name="fasil_id[]"

  • 目前我正在使用这种方法进行循环:

     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 举报,一经查实,本站将立刻删除。