上周我在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定义存储在不同数据库中的实体之间的关联。
限制是你只能懒得加载它们。