2012-04-04 11 views
0

私は、次のDB関係があります形状で、今ネストされたリンクされたデータを取得し、CakePHPの(2.1.0)

Building hasMany Shape

Appartment hasOne Shape

Building hasMany Appartment

Shape belongsTo Building & Appartment

をモデル私は特定の建物に属するすべての図形を取得したいと思います。これには、この特定の建物に属するアパートに属する図形が含まれます。

など。

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

あなたはそれを高くすることに同意する。しかし、それは再帰を1に上げるときには、すでにすべてが機能しているはずです。しかし、多くの関係が定義されている場合、包含可能な振る舞いが実際にはこの状況にとって最良の選択肢です。 – Bearwulf

0

シェイプを独自のテーブルとして再考することもできます。あなたのテーブルにのみ適切に1を持っており、このようになります場合

たとえば、:

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とcoordinate_idで構成され、xとy座標を持つ座標テーブルがあります。そして、少なくとも3x座標と3y座標から形状が存在します(したがって、3座標ID)。 – pbond

関連する問題