1

最近几天我一直在玩 cakephp,我正在尝试弄清楚不同数据源之间的关联是如何工作的。我一直在谷歌上搜索,但没有取得太大的成功。

例如,假设我有两个模型,一个将数据存储在 MySQL 数据库中,另一个将数据存储在 XML 文件中。他们都有 HABTM 设置相互链接。那么,当一个被搜索时,系统是如何连接两个数据源的,效率如何(即避免N+1问题)?

4

2 回答 2

1

我刚刚使用 cake 3 遇到了类似的问题。

我正在使用 Postgres,我的数据位于不同的模式中,我将这些模式定义为不同的数据源。为了使关系工作,我必须为蛋糕添加表定义,以发出单独的查询来连接数据。

这是我的 AccountsTable 中的关系定义,它存储在 comp_x.accounts 中,属于存储在 public.banks 中的 Banks

$this->belongsTo('Banks', [
        'foreignKey' => 'bank_id',
        'strategy' => 'select' // this is the change I made
]);

这样,cake 会进行单独的查询以获取银行数据,而不是尝试在同一查询中加入不存在的表 comp_x.banks。

在您的问题中,您提到了 HABTM 关系。我相信它可能是相似的。关于效率,我没有什么要补充的,因为我还没有在大型数据集上测试过它。

于 2017-12-05T19:10:17.553 回答
0

它不是。当您创建一个relation蛋糕时,您所做的就是构建 MySQL 获取数据所需的语言。

Cake 与这种关系如何等同于 MySQL 通常获取的实际数据无关。

于 2013-01-10T23:06:43.143 回答