2016-12-24 25 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