Сравните совокупность столбца отношения oneToMany со столбцом таблицы владельца при наличии () - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть две модели 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 с его правильным значением. Почему последнее условие фильтрации не работает? Чего мне не хватает?

Большое спасибо заранее!

...