Laravel表单,多选保存到数据库的不同行中

时间:2018-07-09 12:12:59

标签: php mysql laravel laravel-5 laravel-blade

我有一个多重选择,下面是我刀片内多重选择的代码。

    {{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();
}

1 个答案:

答案 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();
        }
    }
}