2017-05-31 4 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(); 
} 

誰でも助けることができますか?もちろん

は、1列で保存必要はありませんが、また私はあなたが破メソッドを使用して、それを保存する変数にその列に割り当てることができ、それらを

答えて

2

をこれを行うこと

{{Form::checkbox('art[]','art')}}Art 
その後、

hobby[]ようseomthing art[]使用の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(); 

いけないあなたが趣味のために必要ないけないデータを除外することを忘れ。

関連する問題