如何计算成绩然后传递给 blade 模板
How to calculated grade then pass to blade template
我有 table 命名为 SCORE,它有列名称 Result,我想根据值应用成绩计算从 RESULT 像这样
if('result'>=90)
{grade=A+}
这是我的成绩转换
90% 到 100% (A+),80% 到 89% (A),70% 到 79% (B),60% 到 69% (C),50% 到 59% (D), 40% 到 49% (E),30% 到 39% (F),20% 到 29% (G),28% 到 0% (N/A),null(W)
注意 我不知道如何在我的控制器中执行此操作并传递给 blade
控制器:
public function index($id)
{
$leads=Lead::findorFail($id);
$scores = Score::with('lead','subject')->where('lead_id','=',$id)->get();
$from = date('2018-01-01');
$to = date('2018-03-31');
$atnds = DB::table('attendances')
->select(DB::raw('count(*) as total, status'))
->where('status', '=', 'P')
->whereBetween('days', [$from,$to])
->groupBy('status')
->where('lead_id', '=', $id)
->get();
$pdf = PDF::loadView('reports.pdf', compact(['scores','atnds','leads']));
$pdf->setPaper('A4', 'landscape');
return $pdf->stream('data.pdf');
}
查看
@foreach($scores as $score)
<td> {{$score->subject->subject_name}}</td>
<td> {{$score->result}}</td>
<td> {{This where i want to put grade}}</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
@endforeach
我高度建议您不要在视图中执行此操作,而是在模型或库中某处进行计算。
假设你在分数模型中这样做,你可以这样做:
public function getGrade() {
if(is_null($this->result)){ return 'W'; }
if($this->result >= 90) { return 'A+'; }
if($this->result < 90 && $this->result >= 80) { return 'A'; }
if($this->result < 80 && $this->result >= 70) { return 'B'; }
if($this->result < 70 && $this->result >= 60) { return 'C'; }
if($this->result < 60 && $this->result >= 50) { return 'D'; }
if($this->result < 50 && $this->result >= 40) { return 'E'; }
if($this->result < 40 && $this->result >= 30) { return 'F'; }
if($this->result < 30 && $this->result >= 20) { return 'G'; }
if($this->result < 20) { return 'N/A'; }
}
然后在你看来这样称呼它:
$score->getGrade();
我有 table 命名为 SCORE,它有列名称 Result,我想根据值应用成绩计算从 RESULT 像这样
if('result'>=90)
{grade=A+}
这是我的成绩转换
90% 到 100% (A+),80% 到 89% (A),70% 到 79% (B),60% 到 69% (C),50% 到 59% (D), 40% 到 49% (E),30% 到 39% (F),20% 到 29% (G),28% 到 0% (N/A),null(W)
注意 我不知道如何在我的控制器中执行此操作并传递给 blade
控制器:
public function index($id)
{
$leads=Lead::findorFail($id);
$scores = Score::with('lead','subject')->where('lead_id','=',$id)->get();
$from = date('2018-01-01');
$to = date('2018-03-31');
$atnds = DB::table('attendances')
->select(DB::raw('count(*) as total, status'))
->where('status', '=', 'P')
->whereBetween('days', [$from,$to])
->groupBy('status')
->where('lead_id', '=', $id)
->get();
$pdf = PDF::loadView('reports.pdf', compact(['scores','atnds','leads']));
$pdf->setPaper('A4', 'landscape');
return $pdf->stream('data.pdf');
}
查看
@foreach($scores as $score)
<td> {{$score->subject->subject_name}}</td>
<td> {{$score->result}}</td>
<td> {{This where i want to put grade}}</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
@endforeach
我高度建议您不要在视图中执行此操作,而是在模型或库中某处进行计算。
假设你在分数模型中这样做,你可以这样做:
public function getGrade() {
if(is_null($this->result)){ return 'W'; }
if($this->result >= 90) { return 'A+'; }
if($this->result < 90 && $this->result >= 80) { return 'A'; }
if($this->result < 80 && $this->result >= 70) { return 'B'; }
if($this->result < 70 && $this->result >= 60) { return 'C'; }
if($this->result < 60 && $this->result >= 50) { return 'D'; }
if($this->result < 50 && $this->result >= 40) { return 'E'; }
if($this->result < 40 && $this->result >= 30) { return 'F'; }
if($this->result < 30 && $this->result >= 20) { return 'G'; }
if($this->result < 20) { return 'N/A'; }
}
然后在你看来这样称呼它:
$score->getGrade();