我有两个表,username
两者都有字段。如何为本地表和外部表指定字段名称?
我希望 CakePHP 会做类似的事情
ON (`T1`.`username` = `T2`.`username`)`
结果。在没有任何更改的情况下,表将按照以下条件连接:
ON (`T1`.`id` = `T2`.`t1_id`)`
设置'foreign_key' = 'username'
属性是不够的,因为它会产生这样的查询:
ON (`t1`.`id` = `t2`.`username`)`
我有两个解决方案。第一个是使用'join'属性和动态连接表。在这种情况下,我可以设置本地和外国字段。但是,如果我需要将更多表加入到那个表中,手动加入,我不能再使用包含我需要手动编写以下连接,即使该关联设置正确。所以我每次都需要编写长连接定义而不是只使用'contain' => array('T1', 'T2', 'T3')
其次是将表的'primary_key'设置为相应的字段。它可以在模型文件或运行时完成。在我的情况下,它不能在模型中完成,因为该表的字段也具有“正确”关联'id'
。设置它运行时就是这种情况,但我不喜欢它,因为它不明显并且看起来像一个黑客。
当我问这个问题时,我以为我遗漏了一些明显的东西,但现在我明白 CakePHP 无法做到这一点。所以我开始赏金,希望有人分享解决方案。如果不是,我将尝试阅读蛋糕源并重新定义模型一些方法以添加'foreign_key'
在关联定义附近定义本地字段的能力。