数据库结构:
表:sales_payments
列:id,payer_id,payment_status,金额,...
请参阅此雄辩的查询。 它工作正常,但现在我需要金额键的总和以及这个给定的雄辩查询和 where 条件。
$query = SalesPayment::with(['abc.xyz'])
->whereHas('abc.xyz', function ($query) use ($options) {
$query->where('xyz_id',$options['xyz_id']);
});
$query->where(['key3' => key3(), 'payment_status' => PAYMENT_STATUS_SUCCESS]);
$query->orderBy('created_at', 'desc');
return $query->paginate(config('constants.PAGE_LIMIT'));
可能的解决方案
只需按照下面提到的方式进行选择
$query = SalesPayment::select('*', DB::raw('SUM(amount) AS total_sale_amount')->with ....
我已经测试了这个解决方案,它工作正常。
如果有比这更好的解决方案,请告诉我。我也在寻找其他一些解决方案。
编辑:但是这个解决方案有一个问题,当我把聚合函数(总和(放在选择中时,它只返回一条记录,否则它会返回多条记录。
可以在查询上使用sum
方法。
$amount = $query->sum('amount');
将执行具有相同条件的新查询以计算列的总和。
https://laravel.com/docs/6.x/queries#aggregates