我有两个表的用户和位置
用户具有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`')
它将尝试联接=='
RelatedModel
。some_field
'(实际字符串)的行关于mysql - Cakephp模型关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3814862/