Kasperenysh
@Kasperenysh
Рецидив в особо острой форме))

Как получить модели сравнив суммы полей отношений?

Добрый вечер. Не могу собрать в голове и особо не пойму даже как загуглить...
Суть вопроса разжую на примере, чтобы не вдаваться в дебри проекта... Надо получить условно все заказы (orders) по которым сумма всех проведенных платежей (incomes.sum) больше чем сумма всех товаров (products.price) в заказе.
Т.е. это какое-то
whereHas(function($query) {тут одна агрегация > другая агрегация})
но как это все собрать вместе - ума не приложу... может кто ссылочку тнет или код скинет...
  • Вопрос задан
  • 62 просмотра
Решения вопроса 1
iMedved2009
@iMedved2009
Не люблю людей
public function scopePayedOrders(Builder $builder):Builder{
return $builder->whereRaw('(select sum(incomes.sum) from incomes where incomes.order_id = orders.id) > (select sum(products.sum) from products where incomes.order_id = orders.id)');
}

$items = Orders::payedOrders()->get();


Можно конечно через join.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы