Laravel - where() по sum() поля в связанной модели

204
27 декабря 2021, 16:40

Есть модель Invoice (счёт) с полем cost (цена). Если модель Payment, связанная с моделью Invoice полем invoice_id. Связь один ко многим - у счёта может быть сколько угодно платежей (оплата в несколько этапов, например). У модели Payment есть поле amount (сумма платежа). Мне нужно сделать следующее (псевдокод):

Invoice::where(sum(Payment.amount) == Invoice.cost)

То есть, выбрать все счета, у которых сумма их платежей совпадёт со стоимостью в счёте (оплаченные, короче, счета). Запрашивать данные и фильтровать через foreach() или через методы Collection не вариант - как минимум, сломается пагинация, построенная на take() и skip(), да и вообще кривой это подход. Нужно средствами БД. Пробовал через whereHas, запутался, ниасилил.

P.S. База PostgreSQL

READ ALSO
Найти популярные маршруты. (sql order by count 2 columns)

Найти популярные маршруты. (sql order by count 2 columns)

подскажите плиз, есть таблица с маршрутами там, понятно, id, еще всякие поля но нас интересует города откуда и куда

152
Ограниченный список строк в txt

Ограниченный список строк в txt

Как сделать добавление текста в txt файл c определенными условиями?

97
Подключение к phpmyadmin

Подключение к phpmyadmin

Не получается сделать подключение к серверуДанные вводятся, но на phpmyadmin не остаются

282
Переадресация email средствами PHP

Переадресация email средствами PHP

Мой сайт получает email на адрес "user@mysiteru", и я желаю совершить переадресацию этого сообщения на реальный почтовый адрес пользователя (скажем,...

175