我有两个表用户和位置
用户拥有ID(主要)和位置字段/列
位置包含ID(主要)和城市列
现在我想通过user.location将这两个表与location.city联系起来 我怎么能这样做考虑城市不是一个主要的关键,但是是独一无二的。 我正在使用cakephp 1.2。
同样在mysql中我可以关联/连接没有主键但只有一个唯一键的表
答案 0 :(得分:1)
无论是在模型中还是在动态绑定中,您都可以使用非主键创建连接,如下所示
public $hasOne = array(
'RelatedModel' => array(
'className' => 'RelatedModel',
'foreignKey' => false,
'conditions' => array(
'`MainModel`.`random_field` = `RelatedModel`.`some_field`'
)
)
}
诀窍是将foreignKey设置为false所以cake不会尝试任何事情,然后设置条件manualy,同时请注意字段是excaped并在一个字符串中像
'`MainModel`.`random_field`' => '`RelatedModel`.`some_field`'
会输出
SELECT ..... FROM ... LEFT JOIN ... ON (`MainModel`.`random_field` = '`RelatedModel`.`some_field`')
会尝试加入=='RelatedModel
。some_field
'(实际字符串)的行