cakephp在同一个表中有两个外键

时间:2011-03-10 09:20:57

标签: database cakephp database-relations

我有一个CakePHP锦标赛网站,我需要管理以下条件:

我需要管理比赛分区和比赛时间表的两个竞争者之间会有一场激烈的竞争,而竞争对手的桌子上的竞争对手和对手将是相同的,意味着同一个用户会互相反对,在这种情况下,如何将两个相同的字段(competitor_id)保存到匹配计划表中,如果某些竞争对手不可用,管理员也可以管理竞争对手的订单等。

1 个答案:

答案 0 :(得分:6)

你的问题到最后会有点混乱,你是否只想从预定的事件和用户(与竞争对手和对手的事件)创建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.