user() ->favoriteCities() ->withCount('attractions') ->get(); return CityResource::collection($favorites); } /** * Add city to favorites */ public function store(Request $request, City $city) { $user = $request->user(); // Check if already favorited if ($user->favoriteCities()->where('city_id', $city->id)->exists()) { return response()->json([ 'message' => 'City already in favorites', ], 409); } $user->favoriteCities()->attach($city->id); return response()->json([ 'message' => 'City added to favorites', 'city' => new CityResource($city), ], 201); } /** * Remove city from favorites */ public function destroy(Request $request, City $city) { $user = $request->user(); $user->favoriteCities()->detach($city->id); return response()->json([ 'message' => 'City removed from favorites', ]); } }