The first result page displays correctly but the second page displayed zero records
If you need the pagination links to have the existing GET query params, then the withQueryString method will append those existing params:
$brokers = User::where('role', 2 )->where('city', $city )->where('status', 1)->paginate(2)->withQueryString();
https://laravel.com/docs/8.x/pagination#appending-query-string-values
The first result page displays correctly but the second page displayed zero records
You need to add the selected attribute on one of the options corresponding to the selected City, e.g.
@foreach ($cities as $data)
<option value="{{$data->id}}" {{ request('project_city') == $data->id ? 'selected' : '' }}>
{{$data->city_name}}
</option>
@endforeach