2012-04-04 3 views
0

У меня есть следующие БД отношений:Получить вложенные связанные данные, CakePHP (2.1.0)

Building hasMany Shape

Appartment hasOne Shape

Building hasMany Appartment

Shape belongsTo Building & Appartment

Теперь, в форме Я хотел бы получить все фигуры, принадлежащие определенному зданию. Это включает в себя формы, принадлежащие к квартирам, принадлежащим этому определенному зданию.

E.g.

Building 'X'

There are 4 shapes directly linked to building X via the belongsTo Building relation. Shape->Building

And there are 2 shapes directly linked to 2 appartments via the belongsTo Appartment relation. These 2 appartments again are directly linked to Building X via the belongsTo Building relation. Thus these 2 shapes are indirectly linked to building X. Shape->Appartment->Building

я не могу получить мою голову вокруг этого, помощь очень ценится.

ответ

2

Использование CakePHP's Containable Behavior.

+0

Спасибо, конечно, кажется, что я ищу. – pbond

+0

Может привыкнуть к чтению/пониманию, но - это потрясающе для получения конкретных данных на основе ассоциаций. – Dave

0

Попробуйте с повышением recursive value в вашей коллекции.

+0

Не очень хорошая идея - повышение рекурсивности принесет больше вреда, чем пользы. – Dave

+0

Согласен, когда вы поднимете его до максимума. Но он allready должен работать, когда вы поднимаете рекурсивный на 1. Однако, когда у вас есть много определений, чем сдержимое поведение, действительно, лучший выбор для этой ситуации. – Bearwulf

0

Возможно, вы также захотите пересмотреть форму как свою собственную таблицу.

Например, если таблица имеет только один правильно и выглядит следующим образом:

shapes 
id  int 
shape varchar 50 

вместо этого:

buildings 
id int 
bulding_number int 
shape varchar 50 
... 
appartments 
id int 
appartment_number int 
shape varchar 50 
... 

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

Однако, если есть другие свойства формы, которые вы хотите захватить, вперед.

+1

Таблица моих фигур состоит из id и координат_id, с таблицей координат, имеющей координаты x и y. И форма существует из по крайней мере 3 x и 3 y координат (так 3 координатных_ид). – pbond

0

Вы можете использовать предложение 'threaded' в своей функции find.
См синтаксический пример здесь: http://book.cakephp.org/1.3/view/1018/find

Это даст все зависимые данные отношений родитель-ребенок

Смежные вопросы