Cakephp模型关系

时间:2010-09-28 16:17:56

标签: mysql cakephp

我有两个表用户位置

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

位置包含ID(主要)和城市列

现在我想通过user.location将这两个表与location.city联系起来 我怎么能这样做考虑城市不是一个主要的关键,但是是独一无二的。 我正在使用cakephp 1.2。

同样在mysql中我可以关联/连接没有主键但只有一个唯一键的表

1 个答案:

答案 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`')

会尝试加入=='RelatedModelsome_field'(实际字符串)的行