Будет проще, если вы пойдете по другому пути:
$usersByWinnings = Winning::with('user')
->select('user_id', \DB::raw('SUM(amount) as winnings'))
->groupBy('user_id')
->orderBy('winnings', 'DESC')
->get()->map(function (Winning $winning) {
return $winning->user;
});
В качестве альтернативы вы можете сделать постобработку sortBy
$top_scorers = User::with('winnings')->get()
->sortByDesc(function (User $user) {
return $user->winnings->sum('amount');
});