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

[複数のデータベースモデリングをPropelの]の可能複製(http://stackoverflow.com/questions:Propel2は今、これをサポート、機能がで導入されました/ 11270008/propel-multiple-database-modeling) – Dez

+0

@Dez私はそれを以前に見たことがありますが、私の質問は本当に駄目だとは思わない。 –

答えて

1

を照会しますモデルクラスの単一のセットは、構成ファイル内のXMLの介在物のための良い候補者を聞こえる:

propel.xmlファイルと一緒にmaster-db.xmlファイル

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

<?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

はい、しかし、プロセスを外部化し、propel.xml文書をいくつかのPHPスクリプトで汎用化することができます。 – hakre

+1

@MatteoTassinari:これは現在Propel2にあります。https://github.com/propelorm/Propel2/commit/b311676a95eef3dacc229424e73be04992dd7b78 – hakre

関連する問題