2010-12-22 6 views
0

나는 광범위한 데이터베이스 관계로 애플 리케이션을 만들고 있는데, 특정 데이터 객체를 리턴해야한다. 나는 그것에 문제가있다. 다음과 같이 표시해야합니다.CakePHP 커스텀 데이터 객체와 그룹핑 및 중첩 된 배열

AccommodationGroup => 
array( 
    ['name']=>'Group1', 
    ['AccommodationRoom']=> array( 
     [0]=> array( 
      ['id']=>1, 
      ['RoomIdentifier']=>'Cabin001', 
     ), 
     [1]=> array( 
      ['id']=>2, 
      ['RoomIdentifier']=>'Cabin002' 
     ) 
    ) 
) 

숙박 시설은 camp_id별로 캠프와 관련이 있습니다. AccommodationGroup은 accommodation_group_id에 의해 AccommodationRoom과 관련이 있습니다.

데이터 개체 예제에서 알 수 있듯이 그룹의 중첩 된 배열로 각 그룹의 방과 함께 특정 캠프의 모든 그룹을 검색해야하며이 모든 것은 특정 캠프로 제한됩니다.

필자는 findAllByCampId()를 사용하여 적용 가능한 모든 그룹을 선택하여 얻으려고 노력했지만, 물론 작동하지 않습니다 (어쨌든 시도하지는 않을 거라는 것을 알았습니다). 다른 테이블 인 AccommodationRoomsCamp는 AccommodationRooms와 Camps 간의 전환 표입니다. 한 가지 방법은 다음과 같습니다

$ this-> AccommodationRoomsCamp-> findAllByCampId ($ 아이디, 배열 ('그룹'=> 'AccommodationRoomsCamp.accommodation_group_id'))

을하지만 AccommodationRoomsCamp에 accommodation_group_id 저장되지 않기 때문에 이미 AccommodationRoom 테이블에 저장되고 있습니다. 나는 하나 이상의 수술을해야한다고 생각하지만, 나는 당황 스럽다. 작은 새끼. 아이디어?

답변

1

테이블이 어떻게 관련되어 있는지 다음과 같이 약간의 어려움을 겪으십시오.하지만 재귀 적 발견을 사용하여 문제를 해결할 수 있다고 생각합니다. 귀하의 컨트롤러에서 이와 비슷한 것 :

$ this-> AccomodationRoomsCamp-> recursive = 2; $ this-> AccomodationRoomsCamp-> 찾기 ('모든 배열 ('조건 '=> 배열 (즐 즐 즐 즐

http://book.cakephp.org/view/1063/recursive

+0

감사합니다, 당신의 제안에 나는 그것을 알아낼 수 있었다 참조하십시오. – jmorhardt

관련 문제