我有2个模型
1个ImageRequest可以具有许多RequestType,而1 RequestType可以具有许多ImageRequest。
我在模型中这样翻译:
ImageRequest模型:
/**
* Get the Request Types for an image request.
*/
public function requestTypes()
{
return $this->hasMany('App\RequestType');
}
RequestType模型:
/**
* Get the Image Requests for a Request Type.
*/
public function imageRequests()
{
return $this->hasMany('App\ImageRequest');
}
我对image_requests表的迁移:
$table->unsignedInteger('request_type_id')->nullable();
$table->foreign('request_type_id')->references('id')->on('request_types');
在我的表单中,当创建这样的新ImageRequest时,我具有多个复选框来选择RequestType:
@foreach($requestTypes as $requestType)
{{ Form::checkbox('request_type_id', $requestType->id) }}
{{ Form::label($requestType->type, $requestType->type) }}
<br>
@endforeach
我的服务中有一个函数可以存储如下所示的ImageRequest:
public function storeImageRequest(StoreImageRequestRequest $request)
{
return Auth::user()->imageRequests()->save(new ImageRequest($request->all()));
}
这很好用,但是它只存储最后选择的“ request_type_id”。它不能存储所有的request_type_id。
如何存储多个request_type_id?
答案 0 :(得分:1)
您已将一对多关系设置为多对多,请阅读docs。 这包括一个存储关系的数据透视表。
以正确的方式设置数据透视表和关系后,可以同步ImageRequest上的RequestType。
还更新您的html以发布具有所有请求类型ID的数组。 接下来,将所有类型与图片同步。
@foreach($requestTypes as $requestType)
{{ Form::checkbox('request_type_ids[]', $requestType->id) }}
{{ Form::label($requestType->type, $requestType->type) }}
<br>
@endforeach
<?php
$imageRequest = Auth::user()->imageRequests()->save(new ImageRequest($request->all()));
$imageRequest->requestTypes()->sync($request->get('request_type_ids'));