Есть модель Invoice (счёт) с полем cost (цена). Если модель Payment, связанная с моделью Invoice полем invoice_id. Связь один ко многим - у счёта может быть сколько угодно платежей (оплата в несколько этапов, например). У модели Payment есть поле amount (сумма платежа). Мне нужно сделать следующее (псевдокод):
Invoice::where(sum(Payment.amount) == Invoice.cost)
То есть, выбрать все счета, у которых сумма их платежей совпадёт со стоимостью в счёте (оплаченные, короче, счета). Запрашивать данные и фильтровать через foreach() или через методы Collection не вариант - как минимум, сломается пагинация, построенная на take() и skip(), да и вообще кривой это подход. Нужно средствами БД. Пробовал через whereHas, запутался, ниасилил.
P.S. База PostgreSQL
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости