Merhaba,
Şimdi iki adet tablom var. Payment ve Payment Details. Eğer ödeme yapıldıysa details'e ilgili verileri ekliyorum.
Örnek kod şu şekilde;
$paymentHistory = Payment::with('details', 'orderDetail.orderShippingFee')
->when(!auth()->user()->hasRole('owner'), function ($q) {
$q->where('seller_id', '=', auth()->user()->parent_id);
}, function ($q) {
$q->where('seller_id', '=', auth()->user()->id);
})
->whereHas('details')
->where('status', '!=', 'pending')
->whereNotNull('payment_date')
->orderByDesc('payment_date')
->orderByDesc('id')
->take(5);
$histories = [];
$totalAmount = 0;
$commission = 0;
$cargo = 0;
foreach ($paymentHistory->get()->groupBy(function($item) {return $item->payment_date->format('d.m.Y');}) as $date => $payments) {
foreach ($payments as $payment) {
foreach($payment->details as $detail) {
if($detail->payment->payment_date->format('d.m.Y') == $date) {
$totalAmount += $detail->amount;
$cargo += $detail->orderItem->orderDetail->orderShippingFee->price;
$commission += $detail->commission;
$histories[$detail->payment->payment_date->format('d.m.Y')] = [
'totalAmount' => $totalAmount,
'cargo' => $cargo,
'commission' => $commission,
'status' => $payment->status
];
}
}
}
}
Her şey çalışıyor burada fakat tüm details'e ait bilgileri topluyor. Ben sadece o tarihle ilgili olanları toplanıp devam etmesini istiyorum.
Örnek dd çıktısı şu şekilde;
#items: array:2 [▶
"12.12.2022" => array:4 [▶
"totalAmount" => 19.35
"cargo" => 7.8
"commission" => 1.35
"status" => "paid"
]
"11.12.2022" => array:4 [▶
"totalAmount" => 34.35
"cargo" => 11.7
"commission" => 2.4
"status" => "paid"
]
]
Yalnız 11.12.2022 olan tarih kendisiyle birlikte yukarıdaki değerlerin toplamı normalde o değer değil.