【问题标题】:Laravel forms, multiselect saving into different rows in databaseLaravel表单,多选保存到数据库中的不同行
【发布时间】:2018-12-17 03:01:48
【问题描述】:

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

    {{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[] 中的每个项目保存在它们自己的数据库条目中,以便以后可以轻松引用它们。一个人怎么会这样,我似乎想不通?

如果您需要我的迁移或控制器,我很乐意添加它们!

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

【问题讨论】:

  • 也发布您的控制器代码。
  • 控制器已添加

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


【解决方案1】:

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

【讨论】:

  • 我稍微编辑了您的代码以使其正常工作,我只需要在 foreach 的每次迭代中创建 AppServer 模型的新实例,并将 app_id 添加到每个实例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-16
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 2018-05-08
  • 1970-01-01
  • 2019-11-24
相关资源
最近更新 更多