2017-12-19 27 views
-1

나는 그들이 room_types, 객실, 요금, 나는 가격 요금 객실 및 요금과Laravel 웅변 및 쿼리 빌더 열망로드 여러 관계 where 절

room_types을 얻으려면 가격 (가격 room_type_id 있으며, 몇 테이블이 = room_types.id). 나는 모든 가격을 받고 임 그

 $roomTypeIds = []; 

     foreach ($hotel->rooms as $room) { 
      array_push($roomTypeIds, $room->roomtype->id); 
     } 

     $roomsByType = RoomType::with(['rooms' => function ($query) { 
      $query->with(['rates' => function($q) { 
       $q->with('policy', 'prices'); 
      }]); 
     }])->whereIn('id', array_unique($roomTypeIds))->get(); 

좋아하지만이 예에서 뭔가를 시도했지만 나는 room_type_id 현재 room_type.id 같다에만 가격하는 것을 싶어. 그래서 그것을 위해 몇 가지 시도를하려고했습니다.

 $roomsByType = RoomType::with(['rooms' => function ($query) { 
      $query->with(['rates' => function($q) { 
       $q->with(['policy', 'prices' => function($q1) { 
        $q1->where('room_type_id', ''); 
       }]); 
      }]); 
     }])->whereIn('id', array_unique($roomTypeIds))->get(); 

하지만 어디서 clouse를 넣어야할지 모르겠군요. 이렇게 할 방법이 있습니까? 내가 갖고 싶어한다는 결과가

[ 
    { 
    "id": 2, 
    "name": "Twin/Double", 
    "created_at": "2017-12-11 08:56:16", 
    "updated_at": "2017-12-11 08:56:16", 
    "rooms": [ 
     { 
     "id": 4, 
     "hotel_id": 1, 
     "room_type_id": 2, 
     "custom_name": null, 
     "room_name": "3", 
     "number_of_type": 2, 
     "number_of_bedrooms": null, 
     "number_of_livingrooms": null, 
     "number_of_bathrooms": null, 
     "created_at": "2017-12-12 06:37:34", 
     "updated_at": "2017-12-12 06:37:34", 
     "rates": [ 
      { 
      "id": 4, 
      "user_id": 19, 
      "custom_name": "Default rate", 
      "price": 0, 
      "automatic": 0, 
      "rate_id": null, 
      "operand": null, 
      "amount": null, 
      "currency": null, 
      "policy_id": 1, 
      "meal_types": null, 
      "created_at": "2017-12-12 09:27:31", 
      "updated_at": "2017-12-12 09:27:29", 
      "pivot": { 
       "room_id": 4, 
       "rate_id": 4 
      }, 
      "policy": { 
       "id": 1, 
       "name": "Free cancellation before 3/60 %", 
       "hotel_id": 1, 
       "free": 1, 
       "before_day": 3, 
       "before_day_price": 60, 
       "until_day_price": null, 
       "created_at": "2017-12-08 14:03:31", 
       "updated_at": "2017-12-08 14:03:31" 
      }, 
      "prices": [ 
       { 
       "id": 1, 
       "rate_id": 4, 
       "room_type_id": 2, 
       "from": "2017-12-01 09:18:46", 
       "to": "2017-12-18 09:18:57", 
       "amount": 100, 
       "created_at": "2017-12-18 09:19:11", 
       "updated_at": "2017-12-18 09:19:12" 
       }, 
       { 
       "id": 3, 
       "rate_id": 4, 
       "room_type_id": 3, 
       "from": "2017-12-22 10:36:30", 
       "to": "2017-12-30 10:36:35", 
       "amount": 3000, 
       "created_at": null, 
       "updated_at": null 
       } 
      ] 
      } 
     ] 
     }, 
     { 
     "id": 5, 
     "hotel_id": 1, 
     "room_type_id": 2, 
     "custom_name": null, 
     "room_name": "3", 
     "number_of_type": 2, 
     "number_of_bedrooms": null, 
     "number_of_livingrooms": null, 
     "number_of_bathrooms": null, 
     "created_at": "2017-12-12 06:37:34", 
     "updated_at": "2017-12-12 06:37:34", 
     "rates": [ 
      { 
      "id": 4, 
      "user_id": 19, 
      "custom_name": "Default rate", 
      "price": 0, 
      "automatic": 0, 
      "rate_id": null, 
      "operand": null, 
      "amount": null, 
      "currency": null, 
      "policy_id": 1, 
      "meal_types": null, 
      "created_at": "2017-12-12 09:27:31", 
      "updated_at": "2017-12-12 09:27:29", 
      "pivot": { 
       "room_id": 5, 
       "rate_id": 4 
      }, 
      "policy": { 
       "id": 1, 
       "name": "Free cancellation before 3/60 %", 
       "hotel_id": 1, 
       "free": 1, 
       "before_day": 3, 
       "before_day_price": 60, 
       "until_day_price": null, 
       "created_at": "2017-12-08 14:03:31", 
       "updated_at": "2017-12-08 14:03:31" 
      }, 
      "prices": [ 
       { 
       "id": 1, 
       "rate_id": 4, 
       "room_type_id": 2, 
       "from": "2017-12-01 09:18:46", 
       "to": "2017-12-18 09:18:57", 
       "amount": 100, 
       "created_at": "2017-12-18 09:19:11", 
       "updated_at": "2017-12-18 09:19:12" 
       }, 
       { 
       "id": 3, 
       "rate_id": 4, 
       "room_type_id": 3, 
       "from": "2017-12-22 10:36:30", 
       "to": "2017-12-30 10:36:35", 
       "amount": 3000, 
       "created_at": null, 
       "updated_at": null 
       } 
      ] 
      } 
     ] 
     } 
    ] 
    } 
] 

답변