如何保存多选值?

How to save multi selected values?

我在罪犯和犯罪之间有一对多的关系,在物种和犯罪之间也有一对多的关系。

罪犯 ID first_name last_name

罪行 ID culprit_id species_id fishing_method_id

物种 ID species_name

fishing_methods ID fishing_methods_姓名

我要达成的目标是为了一次犯罪而拯救许多物种

我的表格

   {{ Form::select('species_id',$speciesRepository, array('Action'), array('multiple', 'class' =>'form-control')) }}

我的控制器

   public function store(CreateCrimeRequest $request)
     {
         $input = $request->all();

         // $data = implode(',', $input);

        // dd($data);

          $crime = $this->crimeRepository->create($data);

          Flash::success('Crime saved successfully.');

         return redirect(route('crimes.index'));
     }

当我从下拉列表中 select 3 个物种时,最后一个 selected 物种被保存,而其他两个则没有。 谁能帮忙解决这个问题

您的 select 名称属性中缺少 [ ]

{{ Form::select('species_id[]', $speciesRepository, array('Action'), array('multiple', 'class' =>'form-control')) }}

你在这里缺少 ():

 $crime = $this->crimeRepository->create($data);

必须是:

$crime = $this->crimeRepository()->create($data);

你也可以使用 createMany:

$crime = $this->crimeRepository()->createMany($data);

此处有更多示例:https://laravel.com/docs/5.5/eloquent-relationships#the-create-method

好吧,您必须对其进行编码以在数据透视表中创建三个记录 table。我假设你有 table 个物种 你有 table 个犯罪。您需要一个 belongsToMany 关系来为一种犯罪存储许多物种和 crime_species 的枢轴 table 然后您将 species 附加到 crime

并且您的 select 名称属性中缺少 [ ]

{{ Form::select('species_id[]', $speciesRepository, array('Action'), array('multiple', 'class' =>'form-control')) }}