gpt4 book ai didi

php - CakePHP 在不破坏 Cake 自动化的情况下自行加入 HABTM 表

转载 作者:行者123 更新时间:2023-12-02 06:20:25 25 4
gpt4 key购买 nike

我有一张运动员表。运动员有教练,教练也是运动员。运动员可能有多个教练。

为了处理这个问题,我创建了一个运动员表,它使用一个带有 id 字段、athlete_id 字段和 coach_id 字段的连接表。 athlete_id 和 coach_id 字段都指向运动员表的 id 字段。

通常,根据 Cake 惯例,我必须将我的两个字段都命名为 athlete_id,但我发现以下链接显示了如何处理:http://book.cakephp.org/1.2/view/851/Multiple-relations-to-the-same-model

根据 Cake 惯例,我会将我的连接表命名为 athletes_athletes,但我不确定它是否会正常运行?将其称为 athletes_coaches 似乎是有意义的,但我敢打赌这可能会破坏 Cake 的自动功能。

这是否适用于名为 athletes_athletes 的连接表?这是正确的方法吗?有没有更好的办法?

最佳答案

第一次在这里回答问题,如有不规范之处请见谅。不久前,我编写了一个社交网络应用程序,其中包含一个具有 HABTM self 加入的用户模型。假设有一个“friends_users”的连接表,我的用户模型关联看起来像这样:

public $hasAndBelongsToMany = array(
'Friend' => array(
'className' => 'User',
'joinTable' => 'friends_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'friend_id',
'unique' => true
)
);

假设我想为特定用户创建一个包含所有 friend 姓名的列表,我可以这样做。

<ul>
<?php foreach($user['User']['Friend'] as $friend): ?>
<li><?php echo $friend['name']; ?></li>
<?php endforeach; ?>
</ul>

因此,只要您在 HABTM 关联中指定表的新名称、foreignKey 和 associatedForeignKey,那么命名连接表实际上并不重要(我仍然尝试并遵循良好的蛋糕命名约定)正确覆盖 Cake 默认值。所以在你的情况下你可以在你的运动员模型中做这样的事情(假设有一个 athletes_coaches 的连接表):

public $hasAndBelongsToMany = array(
'Coach' => array(
'className' => 'Athlete',
'joinTable' => 'athletes_coaches',
'foreignKey' => 'athlete_id',
'associationForeignKey' => 'coach_id',
'unique' => true
)
);

要显示特定运动员的教练列表(可能在运动员的 View 方法中),您可以这样做:

<ul>
<?php foreach($athlete['Athlete']['Coach'] as $coach): ?>
<li><?php echo $coach['name']; ?></li>
<?php endforeach; ?>
</ul>

关于php - CakePHP 在不破坏 Cake 自动化的情况下自行加入 HABTM 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11385472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com