我有两个模型Order
hasMany Revenues
,我想获取所有有欠款的订单,这意味着所有已付收入的总和小于订单价格
Order
具有price_to_customer
,Revenue
具有is_paid
和value
。
我想获取所有其支付收入的总和小于price_to_customer
的订单。
到目前为止,最接近成功的是以下查询
$orders = App\Order::leftJoin(DB::raw('(SELECT order_id, is_paid, SUM(price) as paid FROM revenues GROUP BY order_id) AS revs'), function ($join) {
$join->on('revs.order_id', '=', 'orders.id')->where('revs.is_paid', true);
})->having('paid', '<', 'price_to_customer');
但是恰好在最后一个having()
子句之后,它返回一个空数组。没有它,一切都会很好,并且paid
属性将以正确的值成功嵌入Order
实例中。为什么最后一个过滤子句不起作用?我想念什么?
非常感谢!