如何在Laravel 5.2中存储多选值

时间:2016-07-10 05:30:28

标签: php laravel laravel-5.2 multi-select

我有一个存储新闻的表单。

enter image description here

我在这里使用Multiselect,我希望将所有选定的选项保存在表中,例如用户,员工,电影院作为字符串。

我的控制器存储值的功能是

 public function store(Request $request)
{

    $input=$request->all();

    General_news::create($input);
    return redirect()->back();
}

此函数存储所有提交的字段,但对于multiselect,它只存储最后一个选项,即cinemahall

enter image description here

提交表单时,会显示所有选定的选项,但它们未正确保存在数据库表中。

帮我解决这个问题。

3 个答案:

答案 0 :(得分:16)

确保将name属性设置为数组

<select multiple="multiple" name="news[]" id="news">

将其存储为以逗号分隔的字符串

$news = $request->input('news');
$news = implode(',', $news);

您的字符串看起来像Users,staff,cinemahall。现在,您可能需要逐个检索所有输入,因为您需要改变news值。此外,您还可以使用except()方法从群发中排除news获取所有值。

$news = $request->input('news');
$news = implode(',', $news);

$input = $request->except('news');
//Assign the "mutated" news value to $input
$input['news'] = $news;

General_news::create($input);
return redirect()->back();

答案 1 :(得分:1)

谢谢@ Chay22

你也可以使用Mutators和Accessor https://laravel.com/docs/5.4/eloquent-mutators#defining-an-accessor

/^(?=.{10,24}$)\D*(?:\d\D*){10,16}$/

答案 2 :(得分:0)

如果您使用多选,这可能意味着您需要多对多关系和数据透视表。有点像posts可以属于许多tagstags的人可以属于许多posts

在您的情况下,这可能介于newsnews_types表之间。