我需要将表移动到另一个数据库。
如果我这样做,所有HABTM关系都可以使用像this这样的教程。
但是在其他模型中有belongsTo和hasMany关系,似乎在find()函数中被跳过。
我发现:
if databases for model is different the join build is bypassed. in source_dbo
如果不深入代码,是否有顺畅的解决方法?
表:DB1上的A,B 表:DB2上的C
表:属于C. 表:B HABTM C
在模型A上创建find(),仅返回表A中的数据。 在模型B上,find()返回表B和C中的所有连接数据。
答案 0 :(得分:0)
不确定为什么默认情况下这是禁用/限制的(希望在我不断开发此产品时发现),但经过几个小时的努力,我决定搞乱/ lib / cake / Model / DataSource / DboSoure.php Class并删除了限制。
//<-- commented out line 1064
//if ($model->useDbConfig === $linkModel->useDbConfig) {
if ($bypass) {
$assocData['fields'] = false;
}
if ($this->generateAssociationQuery($model, $linkModel, $type, $assoc, $assocData, $queryData, $external, $null) === true) {
$linkedModels[$type . '/' . $assoc] = true;
}
//} <-- commented out line 1071
之后,$ belongsTo关系的一切正常。