我正在为我的学生设计一个问答调查应用程序(多项选择题)。下面是我的模型。
我要实现的目标是,我要对学生针对特定问题提交的相似和非答案进行分组和计数。
例如
1. Gender
a) Male
b) Female
2. Class
a) Grade 4
b) Grade 5
Sudent A selects 1.a & 2.a
Student B selects 1.a & 2.b
在上面的示例中,两个学生都为第1个问题选择了Male,但对第2个问题的答案却并不相同。
所以我想对相似和不相似的答案进行分组和计数,并在响应页面上显示每个问题。
分组并计数后,我在每个问题上都显示计数,但是在响应页面上的代码如下,这就是我得到的
1. Gender
2
1
1
a) Male
b) Female
2. Class
2
1
1
a) Grade 4
b) Grade 5
注意:在我看来,显示的2,1,1表示2个答案相同,而另外两个(1,1)不相同。
如何使计数显示在下面的各个问题上
1. Gender
Male - 2
2. Class
Grade 4 - 1
Grade 5 - 1
问题
class Question extends Model
{
public function survey() {
return $this->belongsTo(Survey::class);
}
public function answers() {
return $this->hasMany(Answer::class);
}
}
答案
class Answer extends Model
{
public function survey() {
return $this->belongsTo(Survey::class);
}
public function question() {
return $this->belongsTo(Question::class);
}}
控制器
//fetching and grouping same answers for particular question
$get_responses = DB::table('answer')
->groupBy('question_id','answer')
->select('answer', DB::raw('COUNT(answer) as selected'))
->pluck('selected', 'answer')
return view('answer.chart', compact('get_responses'));
查看
<div class="row">
@foreach($surveys->questions as $question)
<div class="col-md-6 col-sm-12">
<div class="card">
<div class="card-header">
<h4 class="card-title">{{$question->title}}</h4>
</div>
</div>
<div class="card-content collapse show">
<div class="card-body">
@foreach($get_responses as $response)
<p>{{$response}}</p>
@endforeach
</div>
</div>
@endforeach