如何在雄辩的laravel中编写此查询?

如何在雄辩的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();