2012-04-04 10 views
0

Ich habe folgende DB Beziehungen:Abrufen verschachtelt verknüpften Daten, CakePHP (2.1.0)

Building hasMany Shape

Appartment hasOne Shape

Building hasMany Appartment

Shape belongsTo Building & Appartment

Jetzt, in der Form Modell Ich möchte alle Formen eines bestimmten Gebäudes abrufen. Dies schließt die Formen ein, die zu den Wohnungen gehören, die zu diesem bestimmten Gebäude gehören.

z.

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

Ich kann nicht scheinen, meinen Kopf, dies zu umgehen, ist Hilfe sehr geschätzt.

Antwort

2
+0

Dank geben, scheint sicher, was ich suche. – pbond

+0

Es kann etwas gewöhnungsbedürftig sein, aber - es ist großartig, spezifische Daten basierend auf Assoziationen zu erhalten. – Dave

0

Versuchen Sie es mit der Erhöhung Ihrer recursive value in Ihrer Suche.

+0

Keine gute Idee - rekursives Verhalten wird mehr schaden als nützen. – Dave

+0

Vereinbart, wenn Sie es zu hoch erhöhen würden. Aber es sollte bereits funktionieren, wenn Sie das rekursive auf 1 erhöhen. Wenn Sie jedoch viele Beziehungen definiert haben, ist das behaltbare Verhalten in der Tat die beste Wahl für diese Situation. – Bearwulf

0

Sie können auch überdenken Form als eigene Tabelle verwenden.

Zum Beispiel, wenn Ihre Tabelle nur eine richtig ist und sieht wie folgt aus:

shapes 
id  int 
shape varchar 50 

diese stattdessen tun:

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

Es wird leichter sein, Form ein richtig wählbar sein, haben Sie auch die der Gebäude- und Apartmenttisch. Ihre Datenbank wird einfacher und schneller, und es wird wahrscheinlich einfacher zu programmieren sein.

Wenn es jedoch andere Eigenschaften der Form gibt, die Sie erfassen möchten, gehen Sie direkt vor.

+1

Meine Shapes-Tabelle besteht aus id und coordinate_id mit einer Koordinatentabelle mit x- und y-Koordinaten. Und eine Form besteht aus mindestens 3 x und 3 y Koordinaten (also 3 Koordinaten_IDs). – pbond

Verwandte Themen