2016-12-24 53 views
1

我目前是多租戶應用程序的開發人員,其中有一個「主」數據庫,用於存儲客戶數據並用作模板,即將其複製每個新客戶都有一個不同的名稱來保存其數據。使用Propel ORM的多租戶應用程序

<?xml version="1.0" encoding="UTF-8"?> 
<database name="master_db" defaultIdMethod="native"> 
    <!-- here are tables' definitions --> 
</database> 

是否有可能使用相同的XML文件,所有的連接模式,所有的客戶:

當使用PHP Propel ORM,模型配置結構化這樣一個XML文件中完成數據庫,還是我需要爲每一個單獨的文件,除了數據庫名稱完全相同?

正如我的問題已經被標記爲this one一個潛在的重複,我已經發現之前,我想解釋一下爲什麼它是不同的:

  • 在這種情況下,數據庫數量將隨着時間的推移改變,而這個問題正是在這種情況下,固定
  • ,所有的數據庫,並在每個所有的表,將有完全相同相同的結構
  • 我做要針對每個客戶不同的類別,而是一組模型類,這將查詢的最後選擇的數據庫
+0

的[推進多個數據庫建模]可能的複製(http://stackoverflow.com/questions:Propel2現在支持這一點,該功能在推出/ 11270008/propel-multiple-database-modeling) – Dez

+0

@Dez我曾經看到過,我認爲我的問題不是真的是一個騙局。 –

回答

1

什麼你問鳴響XML夾雜一個很好的候選人在配置文件中:

master-db.xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<database name="master_db" defaultIdMethod="native"> 
    <!-- here are tables' definitions --> 
</database> 

旁邊的propel.xml文件

<?xml version="1.0" encoding="UTF-8"?> 
<config> 
    <propel> 
    <database name="blueberryshoechamp_db" defaultIdMethod="native"> 
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 
        href="master-db.xml" 
        xpointer="xpointer(/database/*)" 
        /> 
    </database> 
    ... 

這將包含master-db.xml文件中的database文檔元素的所有子元素。

只是你要找的混音。

好消息:

+0

如果這得到實施,那真的是我正在尋找的!這也證實,到目前爲止,我還需要複製整個XML文件,對吧? –

+0

是的,但是您可以將流程外化並通過一些PHP腳本來擴展propel.xml文檔。 – hakre

+1

@MatteoTassinari:現在已登陸Propel2,https://github.com/propelorm/Propel2/commit/b311676a95eef3dacc229424e73be04992dd7b78 – hakre