CakePHP でのモデルの関連付けについて頭を悩ませています。私は以前に OOP や MVC を扱ったことがなく、少し難しいと感じています。
ここに私が持っているものがあります:
Clubs
システム上のユーザーは「クラブ」です。クラブには、主要な連絡担当者を含むさまざまなフィールドがあります - clubs.club_primary_contact_id
Teams
クラブには、1 つまたは複数のチームを関連付けることができます。クラブと同様に、チームにも主要な連絡担当者 (teams.team_primary_contact_id) がいます。チームにもタイプがあり、タイプ テーブル team.type_id にリンクされています。team.club_id 経由でクラブにリンク
Contacts
クラブには、1 つまたは複数の連絡先を関連付けることができます。contact.club_id 経由でクラブにリンク
Types
types.id と types.type_name
clubs/view/x にアクセスして、次のようなページを表示できるようにしたい:
- クラブの主な連絡先の名前/電子メール
- すべてのクラブ連絡先
- チームの主要な連絡先名/電子メールを含むすべてのクラブチーム
TeamsController の追加/編集/削除機能は正常に動作します。つまり、連絡先とタイプのリストを呼び出して、それらをビュー フォームの選択ボックスに表示できます。
ただし、クラブモデルからこれらすべてにきちんとアクセスするのに問題があります。
ここでの私の関連付けは何ですか? 現在、モデルクラスにあるものは次のとおりです。
アプリ/モデル/Club.php
public $hasMany = array(
'Team' => array(
'className' => 'Team',
'foreignKey' => 'club_id'
),
'Contact' => array(
'className' => 'Contact',
'foreignKey' => 'club_id',
'order' => 'contact_name DESC'
)
);
public $belongsTo = array (
'ClubPrimaryContact' => array(
'className' => 'Contact'
)
);
アプリ/モデル/Team.php
public $belongsTo = array (
'TeamPrimaryContact' => array(
'className' => 'Contact'
),
'Club',
'Type'
);
アプリ/モデル/Contact.php
public $hasManyAndBelongsTo = array(
'Team' =>
array(
'className' => 'Team'
)
);
アプリ/モデル/Type.php
public $belongsTo = array (
'Team' => array(
'className' => 'Team'
)
);