LARAVEL 5.5-将数组保存到数据库

时间:2018-07-06 14:31:55

标签: laravel laravel-5

我有一个传递给视图的数组,该数组包含以下内容:

array:353 [▼
0 => "Company name"
1 => "Another name"
....
]

假设用户同时选择了以上两个选项。尽管我可以从表单中成功保存多个选择选项,但我需要保存名称而不是数字。例如,在phpmyadmin中,target_companies列保存为[“ 0”,“ 1”]而不是[公司名称“,”另一个名称“]。

我通过以下方式将此数据传递到我的视图中:

$companies = DB::table('vacancies')->distinct()->select('company')->pluck('company')->toArray();

在我看来,我已经做到了:

查看

<div class="form-group">
  {{ Form::label('target_companies', 'Select Company')}}
  {{ Form::select('target_companies[]', $companies, null, ['multiple'=>true, 'class'=>'form-control']) }}
</div>

在我的控制器中,我有以下内容:

CONTROLLER

public function update(Request $request)
{
  $this-> validate($request, [
      'target_sector' => 'required|max:255',
      'target_skillsets' => 'required|max:255',
      'target_companies'=> 'required|max:255',
      'target_locations'=> 'required|max:255',

  ]);
  //Create Post
  $id = Auth::user()->id;
  $admin = Admin::find($id);
  $admin->target_companies = $request->input('target_companies');
  $admin->target_sector = $request->input('target_sector');
  $admin->target_skillsets = $request->input('target_skillsets');
  $admin->target_locations = $request->input('target_locations');

  $admin->save();

  return redirect('/admin')->with('success', 'Preferences Updated', 'admin',$admin);
}

最后,模型具有以下特征:

protected $casts= [
 'target_companies'=> 'array',
];

1 个答案:

答案 0 :(得分:0)

如果您想从阵列中的表单中接收公司名称,则可以像这样简单地在控制器中调整pluck方法:

$companies = DB::table('vacancies')->distinct()->select('company')->pluck('company', 'company')->toArray();

pluck方法的第二个参数将是键。如果省略,它将是一个索引数组

现在,您将像这样将数组传递给视图:

array:353 [▼
    "Company name" => "Company name"
    "Another name" => "Another name"
    ....
]

您选择的表单的值将是键(公司名称),该键将被传递回控制器以保存数据。那是你想做的吗?