Cakephp 2.3:当外键与模型列不匹配时构建模型关联

时间:2013-04-18 19:51:58

标签: cakephp foreign-keys cakephp-2.0 model-associations

通常,我可以在一个表中创建外键(即列),Cakephp以不同的名称与另一个模型的列关联吗?顺便说一下,我正在使用bake all开始使用标准CRUD设置。

我的问题的一般形式是:

Table_Aid | label | TableB_labelA_id | TableB_labelB_id

Table_Bid | label

为了使问题的其余部分不那么难看,这是我目前的申请:

gamesid | date | us | them

teamsid | name

我认为这可以通过别名和关联定义来实现,但我不太明白。我还想到创建UsThem扩展Team的模型,但这似乎是一种不必要的努力。

我也注意到,在我的Game model UsThem列在$belongsTo数组中,而不是$hasMany,直觉上似乎更正确。

想法?我非常感激!

1 个答案:

答案 0 :(得分:2)

您只需要别名和正确的关联定义。这就是你所需要的。

class Game extends AppModel {
    public $belongsTo = array(
        'Us' => array(
            'className' => 'Team',
            'foreignKey' => 'us'
        ),
        'Them' => array(
            'className' => 'Team',
            'foreignKey' => 'them'
        ),
    );  
}

Bake无法帮助你解决这个问题。如果所有命名都符合惯例,那么它只能进行有根据的猜测。在这种情况下,这是不可能的。