2017-01-30 50 views
0

我一直在试图弄清楚如何使用雄辩来写这个?这是据我所知,有什么建议?我该如何在雄辩的laravel中编写这个查询?

$budgets = Budget::join('transactions','budgets.id','=','transactions.category') 
        ->where('transactions.user_id','=', $authId) 
        ->groupby('transactions.category') 
        ->sum('budgets.amount','-','transactions.amount'); 

查询,下面

SELECT SUM(budgets.amount) - SUM(transactions.amount) as amount, 
     budgets.category 
    FROM budgets 
    JOIN transactions 
     ON budgets.id = transactions.category 
GROUP BY category 

回答

3

你接近,但是当你越来越多列和数学,或半复杂的数学(即不是简单相加)你想通过作品数学作为原始语句中的单独列。

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(); 
+0

完美,谢谢! – Ryan