如何计算等级然后传递到刀片模板

时间:2018-07-28 06:21:12

标签: php laravel laravel-blade laravel-query-builder

我有一个名为 SCORE 的表,该表的列名称为 Result ,我想要基于 RESULT 的值来应用成绩计算,就像这样< / p>

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),空(W)

注意,我不知道如何在控制器内部执行此操作并将其传递给刀片服务器

控制器:

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>&nbsp;{{$score->subject->subject_name}}</td>
<td>&nbsp;{{$score->result}}</td>
<td>&nbsp;{{This where i want to put grade}}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>

  @endforeach

1 个答案:

答案 0 :(得分:0)

高度建议您不要在视图中执行此操作,而应该在模型或库中的某个位置进行计算。

假设您在“得分”模型中执行此操作,则可以执行以下操作:

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();
相关问题