Вчера я задал вопрос здесь ( Laravel Eloquent для построения запроса выберите минимальное значение ). После этого я обновляю свой запрос, чтобы выбрать комнаты.
Мой предыдущий запрос:
$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);
Мой обновленный запрос:
$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();