快速回答
@foreach($services as $service)
<input type="checkbox" name="services[]" value="{{ $service->id }}"
@if (count($case->services->where('id', $service->id)))
checked
@endif>
@endforeach
我假设您在案例和服务之间存在多对多的雄辩关系。所以这where
是一种收集方法,而不是查询构建器。如果它什么也没找到,它将返回一个空集合,它本身就是真的(因此是count
函数)。
但是对于更简洁的方法,如果您一次只查看一个案例,我会继续获取该案例拥有的所有服务 ID 的简单数组并将其传递到视图中。
// The eloquent way
$case_services = $case->services->toArray();
// Otherwise, just query for all service IDs
$case_services = DB::table('case_services')->where('etc...')
// You'll end up with something like [24, 47, 103, 287]
然后在您看来,您可以运行类似
@foreach($services as $s)
<input type="checkbox" name="{{ $s->name }}" value="{{ $s->service_id }}"
@if( in_array($s->service_id, $case_services) ) checked="1" @endif />
@endforeach
我只是喜欢第二种解决方案,因为它更容易判断发生了什么,并且对我来说更容易预测。