我的管理员面板上有15个Checkbox,因此只有网站管理员可以选择或取消它们。
我需要保存在我的桌子上检查的复选框,如下所示:
Name: car,food,game,...
HTML:
{{Form::open(['action'=>'adminHobbyController@store'])}}
<div class="form-group">
<label for="art" class="checkbox-inline">
{{Form::checkbox('art[]','art')}}Art
</label>
<label for="artitecture" class="checkbox-inline">
{{Form::checkbox('artitecture[]','artitecture')}}Artitecture
</label>
<label for="business" class="checkbox-inline">
{{Form::checkbox('business[]','business')}}Business
</label>
...
<div class="form-group">
{{Form::submit('ADD',['class'=>'form-control'])}}
</div>
{{Form::close()}}
我的控制器存储功能:
public function store(Request $request)
{
$add_hobby=new Hobbies;
$add_hobby->name=$request->all();
$add_hobby->save();
return redirect()->back();
}
也试试这个,但只保存最后一个:
public function store(Request $request)
{
$add_hobby=new Hobbies;
$add_hobby->name=$request->input('car');
$add_hobby->name=$request->input('food');
...
$add_hobby->name=$request->input('fashion');
$add_hobby->save();
return redirect()->back();
}
我也尝试了这个但是我得到了错误:
public function store(Request $request)
{
$request->merge([
'name' => implode(',', (array) $request->input('game')),
'name' => implode(',', (array) $request->input('food')),
...
'name' => implode(',', (array) $request->input('fashion')),
]);
$add_hobby=new Hobbies;
$add_hobby->name=$request->input()->all();
$add_hobby->save();
return redirect()->back();
}
任何人都可以提供帮助吗?
当然没有必要保存在一列,但我也不知道另一种保存方式
答案 0 :(得分:4)
您正在通过执行此操作创建多个数组
{{Form::checkbox('art[]','art')}}Art
art[]
的遗嘱使用hobby[]
之类的内容,然后将art
作为值
试试这个
<label for="art" class="checkbox-inline">
{{Form::checkbox('hobby[]','art')}}Art
</label>
<label for="artitecture" class="checkbox-inline">
{{Form::checkbox('hobby[]','artitecture')}}Artitecture
</label>
<label for="business" class="checkbox-inline">
{{Form::checkbox('hobby[]','business')}}Business
</label>
...
<div class="form-group">
{{Form::submit('ADD',['class'=>'form-control'])}}
</div>
然后在你的控制器中你会像
那样foreach ($request->input("hobby") as $hobby){
$add_hobby = new Hobbies;
$add_hobby->name= $hobby;
$add_hobby->save();
}
答案 1 :(得分:1)
您可以通过一个简单的步骤一次性保存它。
<label for="art" class="checkbox-inline">
{{Form::checkbox('art','art')}}Art
</label>
<label for="artitecture" class="checkbox-inline">
{{Form::checkbox('artitecture','artitecture')}}Artitecture
</label>
<label for="business" class="checkbox-inline">
{{Form::checkbox('business','business')}}Business
</label>
...
<div class="form-group">
{{Form::submit('ADD',['class'=>'form-control'])}}
</div>
然后在你的控制器中,
$hobby = implode(",",array_keys($request->except(['_method','_token'])))
//Exclude the parameters from the $request using except() method
//now in your $hobby variable, you will have "art,artitecture,business"
$add_hobby=new Hobbies;
$add_hobby->name=$hobby;
$add_hobby->save();
别忘了排除业余爱好不需要的数据。
答案 2 :(得分:0)
您可以使用implode方法并将其存储在变量中,然后将其分配给列。
$add_hobby->[column]= $array_imploded;
答案 3 :(得分:0)
首先,确保要存储这些值的列是varchar或text,并且可以存储您放在那里的所有文本。
其次,从您的值中输出JSON字符串。 (或序列化的数组字符串,但JSON更好阅读)。然后只需将此设置存储为字符串,并且在访问此数据时不要忘记将JSON解析回数组。
这个链接会对你有所帮助:
http://php.net/manual/en/function.json-encode.php
http://php.net/manual/en/function.json-decode.php
对于这种情况,你选择一个seralized数组: http://php.net/manual/en/function.serialize.php