$users = User::select('id', 'username', 'coins', 'cut') ->when(request()->has('agent_tip_sum'), function ($q) { $q->whereHas('agentBoughts', function ($q) { $q->havingRaw('sum(agent_tip) > ' . request('agent_tip_sum')) ->groupBy('users.id'); }); }) ->select('id', 'username') ->addSelect([ 'agent_tip_sum' => Buy::selectRaw('sum(agent_tip)') ->whereColumn('agent_id', 'users.id') ->groupBy('agent_id') ]) ->where('role', 'agent') ->get(); dd($users);