2017-04-23 14 views
1

사용자는 여러 질문을 기반으로하는 양식을 작성할 수 있으며 각 질문에는 관련된 6 개의 필드가 있습니다.보기 내에서 올바른 형식으로 데이터 표시

형태 정보는 DB에 저장되는이 같은

id/audit_id/question_id/score 
1003 33   97  3 
1004 33   97  0 
1005 33   97  2 
1006 33   97  0 
1007 33   97  2 
1008 33   97  0 
1009 33   98  3 
1010 33   98  1 
1011 33   98  3 
1012 33   98  1 
1013 33   98  3 
1014 33   98  0  

그래서 위의 예에서, 심사 (33) (97), 6 개 각 응답이 98 question_id있다.

배열의 각 질문에 반환
Audit::where('audit_id', $auditScore->id) 
    ->with('rquestion') 
    ->with('rquestion.auditQuestion') 
    ->get(); 

:

Collection {#486 ▼ 
    #items: array:78 [▼ 
    0 => Audit {#490 ▶} 
    1 => Audit {#491 ▶} 
    2 => Audit {#492 ▶} 
    3 => Audit {#493 ▶} 
    4 => Audit {#494 ▶} 
    5 => Audit {#495 ▶} 
    6 => Audit {#496 ▶} 
    7 => Audit {#497 ▶} 
    8 => Audit {#498 ▶} 
    9 => Audit {#499 ▶} 

내가 직면하고있어 문제는 내가 통해 루프를 원하는 것입니다

컨트롤러 기능은 정보를 얻을 수 있습니다 데이터, 사용자에게 다음을 보여 :

하나의 질문과 그 6 답변, 그 다음 질문은 6 는

응답 그러나 각 '질문 행이'개별적으로 반환되기 때문에, 나는 질문의 점수가 있습니다. 그래서 내가 보여주는 모든 점수에 대해, 그것은 의문의 여지가 있습니다!

각 질문마다 항상 6 개의 답이 나옵니다. 그래서 제 생각에는 첫 번째 점수로 질문을 인쇄 한 다음 남은 5 점을 독자적으로 인쇄하는 것이 었습니다.

나는 이것을 달성하는 방법이 확실하지 않지만. question_id 당 6 점을 모두 얻으려면 어떻게해야합니까? 아마도 각 question_id에는 6 개의 점수 배열이 포함되어 있을까요?

많은 감사, question_id에 의해

답변

1

할 수 있습니다 간단하게 그룹화.$auditList이 감사의 목록이 포함되어 있다고 가정
는 : 당신이 원하는 경우

$groupedQuestions = []; 
foreach ($auditList as $singleAudit) 
{ 
    $groupedQuestions[$singleAudit->question_id][] = $singleAudit; 
} 

보다, 당신은이

array:2 [▼ 
    97 => array:3 [▼ 
    0 => Audit {#160 ▶} 
    1 => Audit {#159 ▶} 
    2 => Audit {#163 ▶} 
    ] 
    98 => array:1 [▼ 
    0 => Audit {#164 ▶} 
    ... 
    ] 
    ... 
] 

같은 배열을해야합니다 당신은 약간의 코드를 변경하고 질문을 이동할 수 있습니다 텍스트를 "상단"배열에 배치하면 블레이드를 통해 더 쉽게 가져올 수 있습니다.

foreach ($auditList as $singleAudit) 
    { 
     $groupedQuestions[$singleAudit->question_id]['question'] = $singleAudit->getQuestionText(); // assuming that you have a similar method on your entities 
     $groupedQuestions[$singleAudit->question_id]['answers'][] = $singleAudit; 
    } 

결과 배열은 이와 유사합니다

array:2 [▼ 
    97 => array:2 [▼ 
    "question" => "This is the question text" 
    "answers" => array:3 [▼ 
     0 => Audit {#160 ▶} 
     1 => Audit {#159 ▶} 
     2 => Audit {#163 ▶} 
    ] 
    ] 
    98 => array:2 [▼ 
    "question" => "This is the question text" 
    "answers" => array:1 [▼ 
     0 => Audit {#164 ▶} 
    ] 
    ] 
] 
블레이드를 통해 가져 오는 것은

문제를 인쇄이

@foreach($questions as $question) 
The question is: {{$question['question']}} <br /> 
Answers are: <br /> 
    @foreach($question['answers'] as $answer) 
     {{$answer->id}} <br /> 
    @endforeach 
@endforeach 

처럼 될 것입니다
1033
1034
:이
답변이있는 질문 텍스트입니다 ...
질문 :이 질문의 텍스트입니다
답변은 다음과 같습니다
1035
...

+1

큰 도움이! 그래서 철저히 설명했다. 나는 모델과 관련된 관계를 사용하여 질문 이름을 얻을 수있었습니다. LombaX에 감사드립니다! – Ben