我有一个带有 CakePHP 的锦标赛网站,我需要在其中管理如下详细信息:

两个竞争者之间将有一场格斗比赛,我需要管理比赛分区和比赛日程,这里的竞争者和对手将来自竞争者表的外键相同,这意味着同一个用户将相互反对,而不是在这个在这种情况下,我如何将两个相同的字段 (competitor_id) 保存到比赛日程表中,管理员还可以管理竞争对手的订单,如果某个竞争对手不可用等。

最佳答案

您的问题在最后有点令人困惑,您是否试图简单地从预定事件和用户(与竞争对手和对手的事件)中创建 2 个关系?如果是这样,这可以通过使用外键扩展您的日程表模型中的关系来实现。

而不是说:

var $hasMany = array('Competitor');

可以展开设置外键和表名:
var $hasMany = array(
 'Competitor' => array(
        'className' => 'Competitor',
        'foreignKey' => 'competitor_id'
    ),
 'Opponent' => array(
        'className' => 'Competitor',
        'foreignKey' => 'opponent_id'
    )
);

这将为同一模型设置 2 个关系,您可以分别保存它们。 Further reading.

关于database - cakephp 同一个表中的两个外键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5257608/

10-13 07:31