validate([ 'groupBy' => ['nullable', 'string', 'in:region'], ]); $provinces = Province::query() ->where('active', true) ->get() ->map(fn (Province $province) => [ 'id' => $province->id, 'name' => $province->name, 'region' => $province->region, ]); if ($request->filled('groupBy')) { $provinces = $provinces->groupBy('region'); } return response()->json($provinces); } }