Laravel 模型关系上的计算字段,如模型属性
Laravel computed field on the relation's of a model like a model attribute
我有 Flights
的模型。
Flight
与payments_log
有关系。
在 payments_log
table 中有两个字段:amount
和 type(Input/Output or add/sub)
。
我想在 Flight
模型上添加一个字段,例如 Total_amount
。
Flight
模型上的 total_amount
将是根据 relationship
计算的字段。
type amount
I 5.0
I 10.0
O 2
Total_amount = I+I-O = 13
最佳做法是什么?
在您的 Flight
模型上创建一个 accessor 方法,对日志 table:
中的 amount
列求和
public function getTotalAmountAttribute()
{
// Sum log records of type I (add)
// and substract the sum of all log records of type ) (sub)
return $this->paymentsLog()->where('type', 'I')->sum('amount') - $this->paymentsLog()->where('type', 'O')->sum('amount');
}
然后您可以使用以下方式访问它:
$flight->total_amount;
我有 Flights
的模型。
Flight
与payments_log
有关系。
在 payments_log
table 中有两个字段:amount
和 type(Input/Output or add/sub)
。
我想在 Flight
模型上添加一个字段,例如 Total_amount
。
Flight
模型上的 total_amount
将是根据 relationship
计算的字段。
type amount
I 5.0
I 10.0
O 2
Total_amount = I+I-O = 13
最佳做法是什么?
在您的 Flight
模型上创建一个 accessor 方法,对日志 table:
amount
列求和
public function getTotalAmountAttribute()
{
// Sum log records of type I (add)
// and substract the sum of all log records of type ) (sub)
return $this->paymentsLog()->where('type', 'I')->sum('amount') - $this->paymentsLog()->where('type', 'O')->sum('amount');
}
然后您可以使用以下方式访问它:
$flight->total_amount;