$suppliers = Supplier::with(
[
'purcheses' => function ($query) {
$query->with(
[
'payments' => function ($query) {
$query->sum('amount');
}
]
)->get();
}
]
)->latest()->get();
我有供应商与购买表有多关系的表与付款有多对多关系,付款属于购买,如何获得属于该供应商的每次采购的付款总额?
我想这个包可能对你有帮助,
这个包的自述说明了这个包支持的各种类型的关系:
-
HasMany
-
ManyToMany
-
MorphMany
-
MorphToMany
-
MorphedByMany
-
BelongsTo
下面是一个复杂关系的HasMany关系的自述示例:
/*
Country
-> has many
User
-> has many
Post
-> has many
Comment
*/
class Country extends Model
{
use StaudenmeirEloquentHasManyDeepHasRelationships;
public function comments()
{
return $this->hasManyDeep('AppComment', ['AppUser', 'AppPost']);
}
}
// Access country comments
$country->comments();
在上面的例子中,包使用Eloquent约定键,并且包允许您为本地键和外键指定自定义键。
您可以尝试flatMap和loadSum:
$suppliers = Supplier::with('purchases')
->get();
// Load the payments total for each purchase.
$suppliers
->flatMap
->purchases
->loadSum('payments', 'amount');
return $suppliers;