2016-07-12 6 views
0

私のアプリケーションにはいくつかの助けが必要です。 私はLaravel 4.2とMySQLデータベースを使用しています。 1つ以上のチェックボックスをチェックしてアプリケーションに提供する必要のある情報として、チェックボックスを使用しようとしています。 View複数のチェックボックスをLaravelに保存するには

これが私の見解コードです:私のモデルでは

<label for="jeux_plan"><input id="jeux" name="pieceafournir[]" value="jeux" type="checkbox" ><div ><h4>{{trans('app.jeux')}}</h4></div></label> 
<label for="photocopin"><input id="photocopie" type="checkbox" name="pieceafournir[]" value="photocopie" ><div ><h4>{{trans('app.photocopie')}}</h4> </div></label> 
<label for="contrat"> <input id="contrat" type="checkbox" name="pieceafournir[]" value="contrat" ><div ><h4>{{trans('app.contrat')}}</h4></div></label> 
<label for="certificat"><input id="certificat" type="checkbox" name="pieceafournir[]" value="certificat" ><div ><h4>{{trans('app.certificat')}}</h4></div></label> 
<label for="plan"><input id="plan" type="checkbox" name="pieceafournir[]" value="plan" ><div ><h4>{{trans('app.plan')}}</h4></div></label> 
<label for="cahier"><input id="cahier" type="checkbox" name="pieceafournir[]" value="cahier" ><div ><h4>{{trans('app.cahier')}}</h4></div></label> 
<label for="demande"><input id="demande" type="checkbox" name="pieceafournir[]" value="demande_autorisation" ><div ><h4>{{trans('app.demande')}}</h4></div></label> 
<label for="identification"><input id="identification" type="checkbox" value="identification" name="pieceafournir[]" ><div ><h4>{{trans('app.identification')}}</h4></div></label> 

、私はプロジェクトと作品の間に一対多の関係を持っています。

Project(#id,project_name,project_city,...,) 
Pieces(#id,#project_id,jeux,photocopie,contrat,certificat,plan,cahier,demande,identification) 

あなたが私のPiecesテーブルでブール値属性を使用しているので、チェックボックスがオンの場合は1、そうでなければゼロです。 (私はそれが最善の方法であるかどうかわかりませんが、私は別の効率的なソリューションの提案には開放しています)。私はどのように私は、チェックボックスを使用し、それらを保存することができ疑問に思って

$data = \Input::all(); 
$project = new Project; 
$pieces = new Pieces; 

$project->project_name = $data['project_name']; 
... // Other instructions 
... 
save(); 

は今私のコントローラでは、私は、すべての情報を取得しています。 配列内のチェックボックスの値を取得している場合。それらを保存するために2次元配列を使用するつもりですか?私は本当にここでブロックされています誰も私を助けることができます!読んでくれてありがとう 。

+0

各チェックボックスの値をdbに別々に保存する予定の場合は、コントローラメソッドの 'pieceafournir []'リクエストでforeachを実行してください。 –

答えて

0

あなたが名前を保存する場合、彼らは現在、どのようにこれはアイデアかもしれません:

... 
$project->save(); 

if (isset($data['pieceafournir'])) { 
    $pieceafournir = array_fill_keys((array)$data['pieceafournir'], 1); 
    $pieces->fill($pieceafournir); 
} 

$pieces->project_id = $project->id; 
$pieces->save(); 

は、これらの値をキー配列を行い、それぞれの値を1に設定します。

これはチェックされるフィールドだけを渡すので、DBは0/falseに設定されていないフィールドを設定する必要があります。

フィールドが渡されたことを確認し、テーブルが実際に持っているフィールドが気になるものであることを確認します。

+0

応答ありがとうございます。 私はこのソリューションを使用する場合、私はどのものがDBにそれらを関連付けるためにチェックされているか知ることができません。 たとえば、ユーザーが第2、第4、および最後のものをチェックする場合。テーブルが最初のツリーの列でいっぱいになるので、私は問題を抱えているでしょう。 –

+0

あなたはチェックされているものを知っています...それらは値1で挿入されます。チェックされていないものは入力にありません。 dbはこれらのフィールドをデフォルトのfalseに設定する必要があります。 – lagbox

関連する問題