10

複数のデータベースで動作するように PropelORM を設定することに問題はほとんどありません。ドキュメントに役立つものは見つかりませんでした。

  1. 複数のデータベースからのスキーマの生成

    最初にデータベース スキーマを変更してから実行したい

    $ propel-gen . reverse
    

    schema.xmlを取得します。システムが複数のデータベースで構成されている場合はどうなりますか? 複数のスキーマを生成できますか? ドキュメントからbuildtime-conf.xmlを作成する必要があることはわかっていますが、何もしません。

  2. クラスの生成

    異なるスキーマblog.schema.xmlplatform.schema.xmlに作成したとしましょう。次のことは可能ですか。

    1. スキーマごとに異なるクラス接頭辞を持っていますか? build.propertiesで設定できますが、それpropel.classPrefixはスキーマごとにグローバルに機能します。

    2. スキーマごとに異なるプロジェクト名を持っていますか? ここでもbuild.propertiesで設定できます。これpropel.projectにより、classes ディレクトリに特定のディレクトリが作成されます。現在、すべてのクラスが同じ場所に移動します。両方のスキーマで同じテーブル名を使用すると、一方のクラスが他方を上書きします。

私が自分でできる解決策は、特定のデータベースに対して2つの異なるディレクトリを設定することですが、より洗練された解決策を好むでしょう。

4

1 に答える 1

1

スキーマから行を投稿できます<database>か?

あなたが以下を持っている限り:

<database package="blog" name="blog" defaultIdMethod="native">

blog.schema.xml内に、新しいディレクトリが生成されます。ただし、それらを遅延ロードするように推進すると、衝突が発生するので、手動でテーブルに何かを事前に追加しましたschema.xml(これは、処理するのに最も効率的な方法ではない可能性があります)。

しかし、あなたは次のようなことをすることができます:

  1. blog.schema.xml内:

     <table name="users" phpName="blogUsers" idMethod="native">
    
  2. platform.schema.xml内:

     <table name="users" phpName="platformUsers" idMethod="native">
    

それは私にとってはうまくいきました。

于 2013-01-04T01:54:28.277 に答える