2017-01-30 1 views
0

Я пытался выяснить, как писать это с помощью Eloquent? Это, насколько я понял, какие-то предложения?Как бы написать этот запрос в красноречивом 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