如何在数据库的单个列中保存多个复选框值并使用laravel检索它

sir*_*ros 2 php database checkbox crud laravel

我的管理面板上有15个复选框,因此只有网站管理员可以选择或取消它们。

我需要保存在表中选中的复选框,如下所示:

Name: car,food,game,...
Run Code Online (Sandbox Code Playgroud)

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()}}
Run Code Online (Sandbox Code Playgroud)

我的控制器存储功能:

 public function store(Request $request)
 {
    $add_hobby=new Hobbies;
    $add_hobby->name=$request->all();
    $add_hobby->save();
    return redirect()->back();
 }
Run Code Online (Sandbox Code Playgroud)

也可以尝试此操作,但只保存最后一个:

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();
 }
Run Code Online (Sandbox Code Playgroud)

我也尝试过,但是出现错误:

 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();
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

当然没有必要保存在一个列中,但我也不知道另一种保存它们的方法

Vil*_*ius 5

您正在通过这样做创建多个数组

{{Form::checkbox('art[]','art')}}Art
Run Code Online (Sandbox Code Playgroud)

art[]使用seomthing那样安装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>
Run Code Online (Sandbox Code Playgroud)

然后在您的控制器中,您将像

foreach ($request->input("hobby") as $hobby){
        $add_hobby = new Hobbies;
        $add_hobby->name= $hobby;
        $add_hobby->save();
}
Run Code Online (Sandbox Code Playgroud)