I asked a question earlier to form a query to get aggregate totals for a model in my app. It was helpfully answered but the query is quite complex - not something I envisage eloquent being suitable for. I'd like to avoid using a completely raw query to improve RDMS compaibility but I don't have much experience using the query builder in Laravel. How might I form the following in Laravel?:
SELECT payers_payments.payer_id,
Sum(payers_payments.amount) AS total_paid,
Sum(payers_payments.pays * payments_share.single_share) AS fair_share
FROM payers
INNER JOIN (payers_payments
INNER JOIN (SELECT payment_id,
Sum(amount) / Sum(pays) AS single_share
FROM payers_payments
GROUP BY payment_id) AS payments_share
ON payers_payments.payment_id =
payments_share.payment_id)
ON payers.id = payers_payments.payer_id
WHERE (( ( payers.user_id ) = 1 ))
GROUP BY payers_payments.payer_id;
Things to note:
- This query is slightly different to my original question in that it includes an additional
payers
table as I want to limit the results to a certainuser_id
. Thus there is an extra join. - The table
payments_share
is a temporary table used during the query to aggregate results (I think). Can the query builder handle this?