如何在雄辩的laravel中编写此查询?
问题描述:
I have been trying to figure out how to write this using Eloquent? This is as far as I got, any suggestions?
$budgets = Budget::join('transactions','budgets.id','=','transactions.category')
->where('transactions.user_id','=', $authId)
->groupby('transactions.category')
->sum('budgets.amount','-','transactions.amount');
Query that works below
SELECT SUM(budgets.amount) - SUM(transactions.amount) as amount,
budgets.category
FROM budgets
JOIN transactions
ON budgets.id = transactions.category
GROUP BY category
我一直试图弄清楚如何用Eloquent写这个? 这是我得到的,任何建议? p>
$ budgets = Budget :: join('transactions','budgets.id','=','transactions。 category')
- > where('transactions.user_id','=',$ authId)
- > groupby('transactions.category')
- > sum('budgets.amount',' - ','transactions.amount');
code> pre>
查询在 p>
SELECT SUM(预算。 金额) - SUM(transactions.amount)为金额,
budgets.category
FROM预算
JOIN transactions
ON budgets.id = transactions.category
GROUP BY category
code> pre> \ n div>
答
You were close, but when you're getting multiple columns and math, or semi-complicated math (i.e. not a simple sum) you want to pass the math along as a separate column in a raw statement.
Budgets::join('transactions', 'budgets.id', '=', 'transactions.category')
->select([
DB::raw('SUM(budgets.amount) - SUM(transactions.amount) as amount'),
'budgets.category'
])
->where('transactions.user_id','=', $authId)
->groupBy('budgets.category')
->get();