어제 (Laravel Eloquent query build select min value) 질문을 여기에 왔습니다. 그로부터 방을 선택하기 위해 쿼리를 업데이트하고 있습니다.Laravel Ellquent 일대 다 관계, 동적으로 관련 테이블에 쿼리 추가
내 이전 쿼리
$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);
}
어떻게 난 내 업데이트 쿼리에이를 추가 할 수 있습니다 만 난 다음 쿼리를 포함하고 다음의 설비를 선택하면? 대신이의
$query->whereIn('amenities_id', $amenities);
당신은 사용해야합니다 :
$query->whereIn('amenities.id', $amenities);
을 당신이 때문에는
는
$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();
은'amenities_room' 테이블'room_id' 등을 포함'amenities_id' 열 –
그러나 수를 당신이 얻을 하시겠습니까? 'withCount'에서 당신은'amentities'에서 작동하고'amentities_room'에서 작동하지 않습니다. 어쩌면 당신은'$ query-> whereIn ('amenities_id', $ amenities);'withCount'의 바깥 쪽을 옮기고 싶습니까? –
글자 그대로 쿼리가 어떻게되는지 알지 못해서 배우고 돌아 오게. –