I was trying to find due of all row with a groupby
For that i have used following Query.
$due = DB::table('transactions')
->join('customers','transactions.customer_id','customers.id')
->whereYear('transactions.updated_at', '=', date('Y'))
->where('customers.status','=',0)
->groupBy('transactions.customer_id')
->sum('due');
But the result returns only first row. But if i used following query it returns exact result.
$query3 = DB::table('transactions')
->join('customers','transactions.customer_id','customers.id')
->whereYear('transactions.updated_at', '=', date('Y'))
->where('customers.status','=',0)
->groupBy('transactions.customer_id')->get();
$due = $query3->sum('due');
Why is that why can't we get sum with groupby
?
try this code
$query3 = DB::table('transactions')
->join('customers','transactions.customer_id','customers.id')
->select(DB::raw("sum(due)as new_col ,column1 ,column3 ,column3"))
->whereYear('transactions.updated_at', '=', date('Y'))
->where('customers.status','=',0)
->groupBy('transactions.customer_id')->get();`
hope this will work