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

5rgfhyps  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(410)

我有一个multiselect,代码是下面的multiselect在我的刀片。

{{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[] (由于不支持的操作数类型,现在它在保存时抛出一个错误)
但是我需要将服务器\u id[]中的每个项目保存在它们自己的数据库条目中,以便以后可以方便地引用它们。一个人怎么能这样做呢,我好像搞不懂?
如果您需要我的迁移或控制器,我很乐意添加它们!
edit::表单提交后要存储的控制器

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

xsuvu9jc1#

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

相关问题