我想从我的付款表中返回“金额”之和。一张发票可以有很多付款。下面的“-> sum('amount')无效,返回:
在非对象上调用成员函数addEagerConstraints()。
如何退还我关系中每张发票的所有付款之和?
发票型号:
class Invoices extends Eloquent {
public function payments()
{
return $this->hasMany('Payments')->sum('amount');
}
}
费用模式:
class Payments extends Eloquent {
public function invoices()
{
return $this->belongsTo('Invoices');
}
}
我的表“ payments”保存我的表发票的外键,即invoices_id。
class Invoices extends Eloquent {
public function payments()
{
return $this->hasMany('Payments');
}
}
class Payments extends Eloquent {
public function invoices()
{
return $this->belongsTo('Invoices');
}
}
在您的控制器中
Invoice::with(['payments' => function($query){
$query->sum('amount');
}])->get();
;
我在here中找到了一种简单的方法来完成此操作,可以使用withPivot()方法。
您可以重新定义与以下内容的关系
public function expenses()
{
return $this->belongsToMany('Expenses', 'invoices_expenses')
->withPivot('name', 'amount', 'date');
}
首先确定哪个发票(例如ID 1)
$invoice = Invoices::find(1);
然后急于加载所有相应的付款
$eagerload = $invoice->payments;
最后假设您的发票模型中有amount
字段,您可以使用以下方法简单地找到总和:
$totalsum = $eagerload->sum('amount');
您可以显示此package
$invoices = Invoices::withSum('payments:amount')->get();