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

Posted

技术标签:

【中文标题】如何计算等级然后传递给刀片模板【英文标题】:How to calculated grade then pass to blade template 【发布时间】:2019-01-05 05:03:04 【问题描述】:

我有一个名为 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)

注意我不知道如何在我的控制器中执行此操作并传递给刀片

控制器:

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

【问题讨论】:

在刀片中添加简单的 if,else 条件 可以使用多个if语句.. 【参考方案1】:

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

假设您在 Score 模型中执行此操作,您可以执行以下操作:

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();

【讨论】:

我可以在我当前的控制器中应用这个吗? 您可以将我写的 sn-p 复制并粘贴到您的分数模型中,它应该可以运行 先生此代码显示错误 if(is_null($this->result) return 'W' ); 对不起,应该是if(is_null($this-&gt;result)) return 'W'; 还是一样的先生,只有那行,

以上是关于如何计算等级然后传递给刀片模板的主要内容,如果未能解决你的问题,请参考以下文章

将可变表单刀片模板传递给vue组件

如何在刀片模板中使用 React js

Laravel 数据透视表获取值并传递给刀片模板

我可以将刀片变量传递给 Laravel 中的 php 变量吗?

如何显示传递给刀片视图的数据[重复]

如何将数据从父刀片传递到包含的模式?