我有一个模型与id
,name
和cost
。
protected $table = 'has_costs';
protected $fillable = [
'id','name','cost'
];
然后我还使用append添加新的列,cost_under
和cost_over
,它基本上可以从成本中进行简单的计算。
protected $appends = ['cost_over','cost_under'];
我应该在模型中进行如下计算:
public function getCostOverAttribute()
{
$costOver = (20/100)*cost;
return $this->attributes['over'] = $costOver;
}
public function getCostUnderAttribute()
{
$costUnder = (80/100)*cost;
return $this->attributes['under'] = $costUndr;
}
或者我是否仍应在控制器中执行此操作以使其更加“MVC”?
实际代码比这个例子更复杂,并且需要花费大量时间考虑如何在复杂的Eloquent with
查询中深入附加每个值。
将cost_over
and cost_under
添加为模型属性更有意义。
public function getCostOverAttribute()
{
return 20 / 100 * $this->cost;
}
public function getCostUnderAttribute()
{
return 80 / 100 * $this->cost;
}
你可以访问它们$model->cost_over
和$model->cost_under
。
保持控制器清洁内部模型对其数据的计算。
此外,如果您不想在每次实例化模型时附加这些属性,则可以在控制器中将$model->append('cost_over')
作为路径追加属性。
答案很简单。
将它们保留在模型中,因为如果你做得对:
$model->costUnder