Php 我该如何用雄辩的拉雷维尔来写这个问题?

Php 我该如何用雄辩的拉雷维尔来写这个问题?,php,laravel,laravel-5.3,Php,Laravel,Laravel 5.3,我一直在想如何用雄辩的语言写这篇文章?就我所知,有什么建议吗 $budgets = Budget::join('transactions','budgets.id','=','transactions.category') ->where('transactions.user_id','=', $authId) ->groupby('transactions.category')

我一直在想如何用雄辩的语言写这篇文章?就我所知,有什么建议吗

 $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

您很接近,但是当您得到多个列和数学,或者半复杂的数学(即,不是简单的求和)时,您希望将数学作为原始语句中的单独列传递

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

您很接近,但是当您得到多个列和数学,或者半复杂的数学(即,不是简单的求和)时,您希望将数学作为原始语句中的单独列传递

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