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