我有一个存储新闻的表单。
我在这里使用Multiselect,我希望将所有选定的选项保存在表中,例如用户,员工,电影院作为字符串。
我的控制器存储值的功能是
public function store(Request $request)
{
$input=$request->all();
General_news::create($input);
return redirect()->back();
}
此函数存储所有提交的字段,但对于multiselect,它只存储最后一个选项,即cinemahall
提交表单时,会显示所有选定的选项,但它们未正确保存在数据库表中。
帮我解决这个问题。
答案 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
可以属于许多tags
和tags
的人可以属于许多posts
。
在您的情况下,这可能介于news
和news_types
表之间。