2016-07-12 3 views
0

제 신청서에 도움이 필요합니다. Laravel 4.2 및 MySQL 데이터베이스를 사용하고 있습니다. 하나 이상의 확인란을 선택하여 사용자가 응용 프로그램에 제공해야하는 정보로 확인란을 사용하려고합니다. ViewLaravel에 여러 확인란을 저장하는 방법

이 내보기 코드 내 모델에서

<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> 

, 내가 프로젝트와 조각 사이의 많은 관계를 가지고있다. 당신이 확인란은 1의 체크 그래서 만약 내가, 내 조각 테이블에 부울 속성을 사용하고 noticied 것처럼

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

는, 그렇지 않은 경우는 제로입니다. (일을하는 가장 좋은 방법인지 아닌지는 모르지만 다른 효율적인 솔루션의 제안은 공개되어 있습니다.) 내가 체크 박스를 사용하고 저장할 수있는 방법을 궁금

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

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

:

지금 내 컨트롤러에서 나는 모든 정보를 얻고있다. 배열에서 checkboxes 값을 가져 오는 경우. 나는 그들을 저장하기 위해 2 차원 배열을 사용할 것인가? 나는 정말로 여기 저기 막혀있다. 누구든지 나를 도울 수있다! 읽어 주셔서 감사합니다 .

... 
$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로 설정합니다

+0

각 체크 박스 값을 db에 별도로 저장하려는 경우 컨트롤러 메소드의 'pieceafournir []'요청에 대해 foreach를 수행하십시오. –

답변

0

당신은 현재이 아이디어가 될 수있는 방법 이름을 유지합니다.

이것은 확인 된 필드 만 전달하므로 DB는 0/false로 설정되지 않은 필드를 설정해야합니다.

전달 된 필드가 실제로 테이블에있는 필드인지 확인하면 문제가 될 것입니다.

+0

응답 해 주셔서 감사합니다. 만약 내가이 솔루션을 사용하여 나는 DB에서 그들을 연결하기 위해 어떤 것들을 확인할 수 없습니다. 예를 들어, 사용자가 두 번째, 네 번째 및 마지막 세 번째를 검사하는 경우. 테이블이 첫 번째 트리 열로 채워지기 때문에 문제가 발생할 것입니다. –

+0

어떤 것이 검사되는지 알고 있습니다 ... 값 1로 삽입됩니다. 검사되지 않은 요소는 입력에 없습니다. db는 기본값으로 false를 사용하도록 필드를 설정해야합니다. – lagbox

관련 문제