Пользовательский объект данных CakePHP с группировкой и вложенными массивами - PullRequest
0 голосов
/ 22 декабря 2010

Я работаю над приложением с обширными связями с базой данных, и мне нужно вернуть определенный объект данных. У меня проблемы с этим. Вот как мне нужно, чтобы это выглядело:

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

AccommodationRoom относится к лагерю по camp_id. AccommodationGroup связан с AccommodationRoom по номеру Accommodation_group_id.

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

Я попытался добиться этого, выбрав все подходящие группы с помощью findAllByCampId (), который, конечно, не работает (знал, что не будет, но все равно попробовал). Другая таблица, AccommodationRoomsCamp, является переходной таблицей между AccommodationRooms и Camps. Один из способов сделать это будет:

$ this-> AccommodationRoomsCamp-> findAllByCampId ($ id, array ('group' => 'AccommodationRoomsCamp.accommodation_group_id'))

, нопосение Размещение_группы не сохранено в AccommodationRoomsCamp, поскольку оно уже хранится в таблице AccommodationRoom. Я думаю, что мне нужно сделать больше, чем одну операцию, но я сбит с толку. Немного о новичке. Идеи?

1 Ответ

1 голос
/ 16 марта 2011

Вам будет немного трудно понять, как связаны ваши таблицы, но я думаю, что вы можете решить свою проблему, используя рекурсивные находки. Примерно так в вашем контроллере:

$ this-> AccommodationodationRoomsCamp-> recursive = 2; $ this-> AccommodationodationRoomsCamp-> find ('all, array (' условие '=> array (бла бла бла бла

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

...