count same as aggregates returns single value so
// you try to call method sum on number and it fails DB::table('orders')->where('user_id', $userProfile->id)->count()->sum();
you can make two requests to get sum and count but its not a good idea, or get data in collection and let it do the math
// not a good idea //$count = DB::table('orders')->where('user_id', $userProfile->id)->count(); //$sum = DB::table('orders')->where('user_id', $userProfile->id)->sum('total_including_vat'); //collection way $orders = DB::table('orders') ->where('user_id',$userPorfile->id) ->get(['id', 'total_including_vat']); $result = [ 'order_count' => $orders->count(), 'orders_total' => $orders->sum('total_including_vat') ];
or the same result as for your working example with mix raw expressions
$result = DB::table('orders') ->where('user_id', $userProfile->id) ->selectRaw('count(1) as order_count, sum(total_including_vat) as orders_total') ->first();