比较oneToMany关系的列与having()

时间:2019-04-09 09:49:08

标签: mysql laravel laravel-5.6 laravel-query-builder

我有两个模型Order hasMany Revenues,我想获取所有有欠款的订单,这意味着所有已付收入的总和小于订单价格

Order具有price_to_customerRevenue具有is_paidvalue。 我想获取所有其支付收入的总和小于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实例中。为什么最后一个过滤子句不起作用?我想念什么?

非常感谢!

0 个答案:

没有答案