2017-05-31 23 views
1

我的管理面板上有15個複選框,因此只有網站管理員可以選擇或取消它們。如何在數據庫的單個列中保存多個複選框值並使用laravel檢索它

我需要保存在我的桌子籤這樣的複選框的:

Name: car,food,game,... 

HTML:

{{Form::open(['action'=>'[email protected]'])}} 
    <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(); 
} 

任何人都可以幫助嗎?

當然是沒有必要保存在一列,而且我不知道另一種方式來保存它們

回答

2

你通過創建多個陣列這樣做

{{Form::checkbox('art[]','art')}}Art 

art[]使用seomthing像hobby[]然後insted的把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(); 
} 
+0

謝謝。最後它工作正常 – siros

0

可以使用破滅方法,並將其存儲在一個變量,然後將其分配給列。

$add_hobby->[column]= $array_imploded; 
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

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(); 

不要忘記排除你不需要有愛好的數據。

相關問題