这是我第一次在这里回答问题,所以如果我的回答不标准,我提前道歉。不久前,我写了一个社交网络应用程序,它带有一个用户模型,它有一个 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 以便正确覆盖,您将连接表命名为什么并不重要(我仍然尝试遵循良好的蛋糕命名约定)蛋糕默认值。所以在你的情况下,你可以在你的运动员模型中做这样的事情(假设有一个运动员教练的连接表):
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>