Laravel中如何在多选Select2中显示中间表(pivot)值?
在Laravel多选Select2中显示中间表的service_id值
解决方法
直接将视图代码中的pivot_should_be_here替换为services->pluck('id')即可,修改后的完整代码如下:
@foreach ($service as $item) <option value="{{ $item->id }}" {{ in_array($item->id, $appointment->services->pluck('id') ?: []) ? 'selected' : '' }}> {{ $item->name }}</option> @endforeach
原理说明
- 控制器中通过
with('services')预加载了预约关联的服务集合,$appointment->services就是这个关联集合。 pluck('id')方法会从集合中提取所有服务的ID,生成纯ID数组,刚好适配in_array的判断逻辑,自动选中中间表中已关联的服务。
可选优化(避免空值报错)
如果存在$appointment为空的场景,可增加空值判断防止报错:
@foreach ($service as $item) <option value="{{ $item->id }}" {{ isset($appointment) && in_array($item->id, $appointment->services->pluck('id')) ? 'selected' : '' }}> {{ $item->name }}</option> @endforeach
内容的提问来源于stack exchange,提问作者Sharmae Reyes
相关产品推荐
相关产品推荐

