ここでの質問に答えるのはこれが初めてなので、回答が標準的でない場合は事前にお詫び申し上げます。少し前に、HABTM の自己結合を持つユーザー モデルを使用してソーシャル ネットワーキング アプリを作成しました。「friends_users」の結合テーブルを想定すると、ユーザー モデルの関連付けは次のようになります。
public $hasAndBelongsToMany = array(
'Friend' => array(
'className' => 'User',
'joinTable' => 'friends_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'friend_id',
'unique' => true
)
);
特定のユーザーのすべての友達の名前のリストを作成したいと仮定すると、次のようなことができます。
<ul>
<?php foreach($user['User']['Friend'] as $friend): ?>
<li><?php echo $friend['name']; ?></li>
<?php endforeach; ?>
</ul>
したがって、HABTM アソシエーションでテーブルの新しい名前、foreignKey および associatedForeignKey を指定して正しくオーバーライドする限り、結合テーブルの名前は問題ありません (私は今でもケーキの命名規則に従うようにしています)。ケーキのデフォルト。したがって、あなたの場合、Athlete モデルで次のようなことができます (athletes_coaches の結合テーブルを想定):
public $hasAndBelongsToMany = array(
'Coach' => array(
'className' => 'Athlete',
'joinTable' => 'athletes_coaches',
'foreignKey' => 'athlete_id',
'associationForeignKey' => 'coach_id',
'unique' => true
)
);
特定のアスリートのコーチのリストを表示するには (おそらくアスリートのビュー メソッドで)、次のようにします。
<ul>
<?php foreach($athlete['Athlete']['Coach'] as $coach): ?>
<li><?php echo $coach['name']; ?></li>
<?php endforeach; ?>
</ul>