आप संग्रह के sum()
. में बस कुछ कॉलबैक पास कर सकते हैं विधि:
$warehouses_collection->map(function ($warehouse) {
return (object) [
'id' => $warehouse->id,
'warehouse' => $warehouse->warehouse,
'total_income' => collect($warehouse->sales)->sum(function ($sale) {
((int) $sale->price) * $sale->quantity * ($sale->status == 1 ? 1 : -1)
})
];
});
WithSum
यहां उपयोग करना थोड़ा मुश्किल है लेकिन withAggregate
calling पर कॉल करना काम करता है।
Warehouse::withAggregate(
'sales as total_income',
'sum(case when status = 1 then price * quantity when status = 2 then price * quantity * -1 else 0 end)'
)->get()