2011-08-14 10 views
0

CakePHPでは、ゼロから多関係をどのように設定しますか?CakePHP - ゼロから多への関係

たとえば、Player、PitcherStats、FielderStatsという3つのモデルがあります。プレーヤーは投手か野手のどちらかです。したがって、プレイヤーは、(ゼロまたは多くの)ピッチャーの統計または(ゼロまたは多くの)フィールダーの統計を持ちます。 PitcherStatsはPlayerにbelongsTo関係を持ちます。そしてFielderStatsも同様です。 Playerモデルは他の2つのモデルとどう関係していますか?

+2

コードでは、1対Nの関係のようにモデル化します。 2つのテーブルのいずれかに行が存在しないことは重要ではありません。関連するデータがまだない場合は、1対Nの関係には行が存在しません。 –

+0

Playerテーブルを表示すると、CakePHPはすべてのプレイヤーでPitcherStatsとFielderStatsを探しますが、野手のPitcherStatsと投手のFielderStatsを見つけることができません。そして、これはエラーになります。私が今まで考えていた解決策は、プレーヤーhasManyを除外することです。 – Reggie

+0

上記の未完のコメントは無視してください。Player hasMany PitcherStat、FielderStat works。ありがとう!この関係をモデルに持たせるか、必要に応じてバインドする方が良いでしょうか?問題は、Statテーブルには多くのデータがあるため、すべてのPlayersをリストするページを表示すること(およびこの定義された関係を持つ)は読み込みに時間がかかることです。代替案は、多くの選手が表に記載されている場合に関係を解除することです。 – Reggie

答えて

0

具体的な統計情報への外部キーを持つ統計情報のテーブルが1つ必要です。あなたは統計のために3つのテーブルを構築する必要があります.1つはすべての統計値(外部キーと型)を保持し、もう1つは具体的な値を保持します。 X関係船に

+0

私の考えはちょっとはずれているかもしれませんが、私がこのような状況でモデルを作るなら、私は同じ位置にいます。プレーヤーhasMany(NewTable)。 (NewTable)belongsToプレーヤー。しかし、NewTableがPitcherStatとFielderStatにどう関係しているのですか?それでもまだ多対多関係はありますか? NewTableの優れた実践を構築していますか? – Reggie

0

ゼロは、実際に存在する

のみ2×関係に1/Nのサブグループである:

  • 1:N
  • N:M

の異なる組み合わせで、異なる外部キーの選択

1:1は1:nだけで、キーを置く場所(左右のテーブル)を決めることができます。

0:xは1:nまたはn:mの単純なケースですが、まだレコードがありません。

+0

実際には1対1の関係(hasOne)があります... – JJJ