我有一个多重选择,下面是我刀片内多重选择的代码。
{{Form::label('server_id', 'Server')}}
<select multiple="multiple" name="server_id[]" id="server_id" class="form-control form-control-md">
@foreach($servers as $key => $name)
<option value="{{$key}}">{{$name}}</option>
@endforeach
</select
我遇到的问题是我需要将每个选定的值保存在数据库的不同行中。如您现在所见,key
正在server_id[]
中保存
(现在由于不支持的操作数类型,它在保存时抛出错误)
但是我需要将server_id []中的每个项目保存在它们自己的数据库条目中,以便以后可以方便地引用它们。我似乎不知道该怎么做?
如果您需要我的迁移或控制器,我很乐意添加它们!
编辑::提交表单后存储的控制器
public function store(Request $request)
{
$this->validate($request, [
'server_id' => 'required',
]);
$app = Apps::orderby('created_at','desc')->first();
$app_id = $app->id;
Helpers::storeAppServer($request, $app_id);
return redirect('dashboard')->with('success', 'Application Server Updated');
}
助手:
public static function storeAppServer(Request $request, $app_id){
$appserver = new AppServer;
$appserver->app_id = $app_id;
$appserver->server_id = $request->input('server_id') + 1;
$appserver->save();
}
答案 0 :(得分:2)
由于server_id
是一个多选字段,因此它将作为数组发布。并且可以在Helper函数storeAppServer
中视为数组。迭代server_id
或$serverIds
中的所有值,并将它们一个一保存在数据库中。
代码:
public static function storeAppServer(Request $request, $app_id)
{
$serverIds = $request->input('server_ids');
if (is_array($serverIds)) {
foreach ($serverIds as $serverId) {
$appserver = new AppServer;
$appserver->app_id = $app_id;
$appserver->server_id = $serverId + 1;
$appserver->save();
}
}
}