如何使用cakephp 3进行不同数据库中模型之间的关联?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用cakephp 3进行不同数据库中模型之间的关联?相关的知识,希望对你有一定的参考价值。

上周我在cakephp 3.0中遇到了与缩放相关的问题。

基本上,我设计了一个服务于多个客户的电子商务应用程序。每个商店都会在特定的子域(client1.application.com; client2.application.com等)中销售其产品。所有商店将共享相同的应用程序源。

我希望有一个用于用户身份验证和其他公共资源的公共数据库,例如城市,国家/地区等的表,以便所有用户都可以访问使用此应用程序并具有相同登录信息的所有电子商务商店。

每个客户端都有一个包含其特定资源的数据库,例如:有产品,销售等的桌子

我发现这篇有趣的文章http://mark-story.com/posts/view/using-cakephp-and-a-horizontally-sharded-database并且我已经实现了该解决方案,以便cakephp可以知道识别子域并选择客户端的数据库作为默认连接。我更改了我想要使用公共数据库的所有模型(用户等),以便它们始终连接到公共数据库。它正在发挥作用。

但是,当谈到cakephp中的关联时,我仍然有问题。例如:每个客户端在其特定数据库中都有一个表,用于关联common_resources数据库中的Users表,以便在管理员登录时,该应用程序授予该子域的所有管理权限。

总之,该问题涉及不同数据库中的表之间的关联。非常感谢!

答案

通过在defaultConnectionName()类中定义良好的Table,您可以使用LazyLoad Plugin定义存储在不同数据库中的实体之间的关联。

限制是你只能懒得加载它们。

另见documentation

以上是关于如何使用cakephp 3进行不同数据库中模型之间的关联?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CakePHP 控制器中使用多个模型

CakePHP:将数据保存到 3 个不同的模型

如何在 Cake PHP 3.5 中设置模型之间的关联?

如何在 cakephp 中为不同的模型设置不同的布局

在模型中使用 cakephp 组件

CakePHP 如何在一个视图中显示来自三个相关模型的数据?