使用复选框组

时间:2017-04-03 00:12:42

标签: php laravel checkbox eloquent

我想将我的复选框组Form::checkbox('services[]')与来自我的数据透视表的数据绑定,但我遇到了麻烦,我认为这是因为没有密钥返回{{1 }}

我的数据模型如下:

商家
服务
Business_Service 表,用于存储多对多链接。

刀片模板

service_id

控制器

@foreach($service as $service)
{!! Form::checkbox('services[]', $service->id, (in_array($service->id, $selected_services) ? true : false)) !!}
@endforeach

当我返回$ selected_services时,我可以看到以下内容:

  

[{" ID":2"名称":"服务   1""图像":" picture.png"" created_at":" 2017年3月31日   00:31:20""的updated_at":" 2017年3月31日   00:31:20""枢轴" {" business_id":103,"的service_id":2}},{" ID&# 34;:3,"名称":"服务   2""图像":" picture.png"" created_at":" 2017年3月31日   00:31:23""的updated_at":" 2017年3月31日   00:31:23""枢轴" {" business_id":103,"的service_id":3}}]

我尝试过这样更改$service = Service::all(); $selected_services = Auth::user()->business->services()->get(); return view('signup.step2', compact('service', 'selected_services'));

$selected_services

但是这只会返回一行,并且不会按预期将某个键与该行关联。

2 个答案:

答案 0 :(得分:0)

我可以准备另一个数组,而不是使用Eloquent返回的集合,但我希望Laravel可以使用一些内置函数。

$service = Service::all();
$business_services = Auth::user()->business->services()->get();

$selected_services = [];
foreach ($business_services as $ss) {
    $selected_services[] = $ss->pivot->service_id;
}

return view('signup.step2', compact('service', 'selected_services'));

答案 1 :(得分:0)

如果您想使用内置的Laravel功能,那么您可以使用Collection::pluck功能。

$businessServices = Auth::user()->business->services->pluck('id');