我想我可能完全落后了,所以如果有一个明显的方法,我将不胜感激。
使用Eloquent模型,我有一个相关模型属性的值。在许多情况下,如果输出在该属性的数据库中的最小/最大值为低,中或高,则我想将输出着色。
E.g。模型值为9.数据库最大值为10,min为1.因此,我会根据其百分比将此颜色设置为红色。
模型是$ prog。相关模型是drLevel。价值是RTO。所以 - 我的链看起来像这样:$ prog-> drLevel-> RTO。
在刀片中,我可以轻松显示值(9)。我想做的是使用最简单/最薄的代码着色它。
这很有效:
{!! format( $prog->drLevel->RTO, $prog->drLevel->min('RTO'), $prog->drLevel->max('rto') ) !!}
,方法大致如下:
function format($value, $min, $max){
switch by $value vs $min/$max, color appropriately
return the value with color
}
虽然很好,但我这样做了100次。我试图找到一种简洁的方法来减少代码,只将对象本身发送到方法:
{!! format( $prog->drLevel->RTO) !!}
然后在该方法上,分开选择对象,并为每个传递的对象重用该片段,如:
function format($value){
$model = findTheObjectBase($value) // Should return $prog->drLevel
$property = findTheLastChainedElementStringValue($value) // Should return 'RTO'
$min = $model->min($property)
etc.
}
不知道怎么做......
我猜我依赖于从对象名称到字符串的更改以使其适合 - > min()函数是一个坏主意...但我正在努力使其干净/减少代码而无需向模型中的每个属性添加方法。
傻瓜的差事?或者我只是错过了一种更简单的方法来做到这一点?答案 0 :(得分:0)
您可以使用drLevel模型编写方法
public function formattedRTO() {
$value = $this->RTO;
$max = App\drLevel::all()->max('RTO');
$min = App\drLevel:all()->min('RTO');
// now you have min, max and current value, form here return whatever you want, using switch maybe
return formated_result;
}
现在你可以简单地使用它,
{{ $prog->drLevel->formattedRTO(); }}
希望有所帮助。