2015-08-31 23 views
1

上周我在cakephp 3.0中遇到了与缩放相关的问题。如何使用cakephp 3在不同数据库中建立模型之间的关联?

基本上,我专为电子商务,这将成为几个客户端应用程序。每个商店都会将其产品销售到特定的子域(client1.application.com; client2.application.com等)。所有商店将共享相同的应用程序源。

我想对用户进行认证和其他公共资源,像城市,国家等桌一个共同的数据库,让所有用户都可以访问使用相同的与登录信息这个应用程序的所有电子商务商店。

每个客户端将具有其特定资源的数据库,例如,与产品,销售等

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

不过,我仍然有一个问题,当涉及到关联CakePHP中。例如:每个客户端在其特定数据库中都有一个管理员表,它将Common_resources数据库中的Users表关联起来,这样当管理员登录时,应用程序将授予该子域的所有管理权限。

综上所述,该问题涉及不同数据库的表之间的关联。 非常感谢!

+0

我会以为这是只适用于使用加入协会的一个问题(hasOne,属于关联)?如果是这样,也许** http://stackoverflow.com/questions/32033558/cakephp-3-using-different-datascources-in-a-query/32034850** – ndm

+0

谢谢@ndm!它解决了! – DUp

回答

0

在您的Table类中定义明确的defaultConnectionName(),您可以定义存储在不同数据库中的实体与LazyLoad Plugin之间的关联。

限制是,你只能懒洋洋地加载它们。

又见documentation

相关问题