在视图中以正确的格式显示数据
Showing the data in the correct format within the view
用户可以填写一个基于多个问题的表单,每个问题有 6 个相关字段。
表单信息存储在数据库中,如:
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 有 question_id 97 和 98,每个都有 6 个答案。
获取信息的控制器函数:
Audit::where('audit_id', $auditScore->id)
->with('rquestion')
->with('rquestion.auditQuestion')
->get();
returns数组中的每个问题:
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 ▶}
我面临的问题是我想遍历数据,向用户显示以下内容:
One question and its 6 answers, then the next question and its 6
answers
但是因为每个'question row'都是单独返回的,所以我有一个问题和分数。所以对于我显示的每一个分数,它都有问题!
每个问题总是有 6 个答案,所以我的想法是以某种方式打印第一个分数的问题,然后自己打印剩余的 5 个分数?
我不确定如何实现。如何获得每个 question_id
的所有 6 个分数?也许,每个 question_id
包含 6 个分数的数组?
非常感谢,
您可以简单地将它们按 question_id
分组。
假设 $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 ▶}
...
]
...
]
如果需要,您可以稍微更改代码并将问题文本移动到 "upper" 数组中,这样通过 blade
获取它会更容易
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 ▶}
]
]
]
通过blade获取会像这样
@foreach($questions as $question)
The question is: {{$question['question']}} <br />
Answers are: <br />
@foreach($question['answers'] as $answer)
{{$answer->id}} <br />
@endforeach
@endforeach
打印
The question is: This is the question text
Answers are:
1033
1034
1035
...
The question is: This is the question text
Answers are:
1035
...
用户可以填写一个基于多个问题的表单,每个问题有 6 个相关字段。
表单信息存储在数据库中,如:
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 有 question_id 97 和 98,每个都有 6 个答案。
获取信息的控制器函数:
Audit::where('audit_id', $auditScore->id)
->with('rquestion')
->with('rquestion.auditQuestion')
->get();
returns数组中的每个问题:
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 ▶}
我面临的问题是我想遍历数据,向用户显示以下内容:
One question and its 6 answers, then the next question and its 6 answers
但是因为每个'question row'都是单独返回的,所以我有一个问题和分数。所以对于我显示的每一个分数,它都有问题!
每个问题总是有 6 个答案,所以我的想法是以某种方式打印第一个分数的问题,然后自己打印剩余的 5 个分数?
我不确定如何实现。如何获得每个 question_id
的所有 6 个分数?也许,每个 question_id
包含 6 个分数的数组?
非常感谢,
您可以简单地将它们按 question_id
分组。
假设 $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 ▶}
...
]
...
]
如果需要,您可以稍微更改代码并将问题文本移动到 "upper" 数组中,这样通过 blade
获取它会更容易 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 ▶}
]
]
]
通过blade获取会像这样
@foreach($questions as $question)
The question is: {{$question['question']}} <br />
Answers are: <br />
@foreach($question['answers'] as $answer)
{{$answer->id}} <br />
@endforeach
@endforeach
打印
The question is: This is the question text
Answers are:
1033
1034
1035
...
The question is: This is the question text
Answers are:
1035
...