我有一个带有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”?
实际的代码比此示例复杂,并且花费大量时间思考如何将每个值附加到复杂的口才with
查询内部。
答案 0 :(得分:1)
答案很简单。
将它们保留在模型中,因为如果操作正确:
$model->costUnder
答案 1 :(得分:1)
使添加cost_over
和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')
的方式附加属性。