Laravel数据库过滤器总数大于并使用distinct



如何在付款总额大于账单时只过滤出一个结果?

我试了3种这样的方法,但仍然不起作用

谢谢

1。试一试(不工作)

$paid_off= Instalments::distinct()->whereRaw('bills >= payments ')->get();

2。第二次尝试(不工作)

$paid_off = DB::table('instalments')
->selectRaw('count(*) as badanusaha_id, badanusaha_id')
->where(('Sum(bills )'), '>=', ('Sum([payments][1] )'))
->groupBy('badanusaha_id')
->distinct()
->get();

3。第三次尝试(不工作)

$pem1 = Instalments::distinct(DB::raw("CAST(SUM(bills) as int) as pem1"));
$pem2 = Instalments::select(DB::raw("CAST(SUM(payments ) as int) as pem2"));

if($pem1 >= $pem2){
$paid_off = Instalments::distinct()->select('*')->get();
}

形象从这个图像中,只显示一个数据是PT Mandiri,因为支付总额而不是账单总额

我不知道你想达到什么目的。但是从你提到的最后一句话

只显示一个数据是PT Mandiri,因为总支付聚集

这个查询将按预期工作:

$instalments = Instalments::query()
->whereRaw('payments >= bills')
->groupBy('badanusaha_id')
->get();

结果:

array:1 [▼
0 => {#1357 ▼
+"id": 1
+"badanusaha_id": 45
+"bills": "100.00"
+"payments": "100.00"
}
]

最新更新