Laravel Красноречивое отношение к многим, динамически добавляя запрос к связанной таблице

Я вчера задал вопрос ( Larvel Eloquent query build select min value ). Из этого я обновляю свой запрос, чтобы выбрать комнаты.

Мой предыдущий запрос:

$buildquery=Room:: with(['hotel' => function ($query) { $query->where('status', 0); }]) ->with('image')->with('amenities'); if ($request->filled('location_id')) { $buildquery->Where('city', $request->location_id); //print_r($request->location_id); } // If amenities is there add it to query if($request->filled('amenities')){ $amenities = $request->amenities; $count = count($amenities); $buildquery->withCount(['amenities' => function($query) use ($amenities){ $query->whereIn('amenities_id', $amenities); }]) ->having('amenities_count', $count); } // If price is there add it to query if ($request->filled('min_price')) { $buildquery->whereBetween('price', [$request->min_price, $request->max_price]); } $buildquery->Where('astatus', 1)->Where('status', 0); //$buildquery->orderBy('price', 'DESC')->take(1); $rooms = $buildquery->simplePaginate(20); 

Мой обновленный uqery:

 $rooms = Hotel::with(['room' => function($query) { $query->orderBy('price', 'asc')->first(); }, 'room.image', 'room.amenities']) ->get(); 

Я столкнулся с одной проблемой. Если пользователь выбирает удобства, то только я включаю следующий запрос,

 if($request->filled('amenities')){ $amenities = $request->amenities; $count = count($amenities); $buildquery->withCount(['amenities' => function($query) use ($amenities){ $query->whereIn('amenities_id', $amenities); }]) ->having('amenities_count', $count); } 

Как я могу добавить это в мой обновленный запрос? ,

Пробовал этот путь, но не повезло

 $rooms = Hotel::with(['room' => function($query) { $query->orderBy('price', 'asc')->first(); }, 'room.image', 'room.amenities' => function($query) { $query->withCount(['amenities' => function($query) use ($amenities){ $query->whereIn('amenities_id', $amenities); }]) ->having('amenities_count', $count); }])->get();