2015-08-31 25 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

相關問題