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

标签 php cakephp has-and-belongs-to-many cakephp-model

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

为了处理这个问题,我创建了一个运动员表,它使用一个带有 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/

相关文章:

javascript - setInterval 使用 ajax 和特定的目标函数

cakephp - 在控制台中输入命令 "cake"没有显示任何输出

php - CakePHP - 选择性 SSL

laravel - 属于多个关系。如何获得唯一的行

ruby-on-rails - 如何清理我的 join_table 并删除重复的条目?

javascript - 升级我的 PHP 聊天系统? (让它只更新新消息?)

php - 连接到 getstream php 时出错

php - CodeIgniter 从数据库中获取数据

cakephp - 将 View 渲染到 CakePHP 1.3 中的变量(以生成 pdf 并下载文件)

ruby-on-rails - 基于 HABTM 类别的 Rails View