我想问一下,是否有可能从使用2个数据库的关联模型中获取数据?
我有2个型号: 文档和文件 他们有关系hasOne();
Docs位于doc中,而Files正在使用文件数据库。
现在我尝试:
$file = TableRegistry::get('Docs');
$query = $res->find('all')->contain('Files')->where(['status'=>100])->limit('3')->toArray();
结果是: 错误:SQLSTATE [42S02]:找不到基表或视图:1146表' doc.files'不存在
但是,Files模型看起来像这样:
public static function defaultConnectionName() {
return 'file';
}
所以,问题是 - 如何使用2个连接模型从数据库获取数据,这些模型使用2个数据库?
谢谢。
答案 0 :(得分:0)
您无法关联属于不同数据源/数据库的两个模型。当您使用belongsTo
或hasOne
关系时,Cake会在创建SQL时尝试使用JOIN
语句;因此,两个表都需要存在于同一个数据库中。
您需要分别查询两个数据源/数据库,然后将结果合并。我建议检查Cake's Hash utility以简化数组操作。