我有两个表的用户和位置

用户具有ID(主要)和位置字段/列

位置具有ID(主要)和城市列

现在我希望通过user.location与location.city关联这两个表
我该如何考虑城市不是主键,而是唯一的。
我正在使用cakephp 1.2。

也可以在mysql中关联/联接没有主键但有唯一键的表

最佳答案

无论是在模型中还是在动态绑定中,都可以使用非主键创建联接,如下所示

public $hasOne = array(
    'RelatedModel' => array(
        'className' => 'RelatedModel',
        'foreignKey' => false,
        'conditions' => array(
            '`MainModel`.`random_field` = `RelatedModel`.`some_field`'
        )
    )
}


诀窍是将foreignKey设置为false,这样cake不会尝试任何操作,然后手动设置条件,还请注意,字段已被概括并且在一个字符串中类似于

'`MainModel`.`random_field`' => '`RelatedModel`.`some_field`'


将输出

SELECT ..... FROM ... LEFT JOIN ... ON (`MainModel`.`random_field` = '`RelatedModel`.`some_field`')


它将尝试联接=='RelatedModelsome_field'(实际字符串)的行

关于mysql - Cakephp模型关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3814862/

10-11 09:02