TurkMvc Giriş işlemleri tablosundan yola çıkıp sum alıp yem girişleri tablosuna join atıp having kullanarak bir grup listesi oluşturmanız lazım ama bunun için iyi SQL bilmeniz lazım. Size şöyle bir şey önerebilirim (bu daha performanslı ve kolay sorgular yazabilmek için bilinen bir tekniktir ama bakımı duruma göre daha zor olabilir)
Yem girişleri tablonuza toplam_odenen_tutar şeklinde bir alan ekleyin. Her bir YemGirisIslem oluşturulduktan sonra ana YemGiris modelindeki toplam_odenen_tutar alanını YemGirisIslem toplamı ile güncelleyin. Mesela:
$yemGiris = YemGiris::find($id);
$yemGiris->yemGirisIslemleri()
->create([
'tarih' => $request->input('tarih'),
'odenen_tutar' => $request->input('odenen_tutar'),
]);
$yemGiris->update([
'toplam_odenen_tutar' => $yemGiris->yemGirisIslemleri()
->sum('odenen_tutar'),
]);
Böylece artık tümü ödenmiş yem girişlerini daha basit bir şekilde bulabilirsiniz:
$odenmisYemGirisleri = YemGiris::whereColumn('toplam_tutar', 'toplam_odenen_tutar')
->get();
$odemeBekleyenYemGirisleri = YemGiris::whereColumn('toplam_tutar', '<>', 'toplam_odenen_tutar')
->get();
Veri de şöyle olacak:
[
{
"id": 135,
"cari_id": 1,
"toplam_tutar": "8000.00",
"odenen_toplam_tutar": "6000.00",
"tarih": "01/01/2023",
"aciklama": "Açıklama",
"created_at": "2023-01-25 18:37:11",
"updated_at": "2023-01-25 18:37:11"
},
{
"id": 136,
"cari_id": 2,
"toplam_tutar": "5000.00",
"odenen_toplam_tutar": "5000.00",
"tarih": "01/01/2023",
"aciklama": "Açıklama",
"created_at": "2023-01-25 18:37:11",
"updated_at": "2023-01-25 18:37:11"
}
]
Gördüğünüz gibi id 136 tamamen ödenmiş ama 135'in 2000 ödemesi daha var...