Cakephp3加入模型构成2个数据库

时间:2015-06-25 09:52:00

标签: cakephp cakephp-3.0

我想问一下,是否有可能从使用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个数据库?

谢谢。

1 个答案:

答案 0 :(得分:0)

您无法关联属于不同数据源/数据库的两个模型。当您使用belongsTohasOne关系时,Cake会在创建SQL时尝试使用JOIN语句;因此,两个表都需要存在于同一个数据库中。

您需要分别查询两个数据源/数据库,然后将结果合并。我建议检查Cake's Hash utility以简化数组操作。