各言語データを別々のデータベースに持つ多言語アプリケーションがあります。これは Symfony 2.2 と Propel 1.6 での設定方法です (config key からの抜粋propel.dbal.connections
):
pl_general: &GENERAL
<<: *BASEDB
dsn: mysql:host=%db_host%;dbname=%db_general%_pl%db_suffix%
general:
<<: *GENERAL
ar_general:
<<: *BASEDB
dsn: mysql:host=%db_host%;dbname=%db_general%_ar%db_suffix%
at_general:
<<: *BASEDB
dsn: mysql:host=%db_host%;dbname=%db_general%_at%db_suffix%
bg_general:
<<: *BASEDB
dsn: mysql:host=%db_host%;dbname=%db_general%_bg%db_suffix%
等々。general
私のデフォルト言語を指す接続が 1 つあります。他のすべてのデータベースは、私のデフォルトとまったく同じ構造を持っています。すべてgeneral-schema.xml
のモデルが構成されています。
propel:migration:generate-diff
問題は、差分 ( ) を生成するか、移行 ( ) を実行しようとしたときに始まりますpropel:migration:migrate
。Propel はそれらの接続が兄弟であることを認識せず、接続に関連するものgeneral
もすべての接続で実行する必要がありますLANG_general
。また、差分を行う場合、デフォルトのデータベースのみがスキーマ/モデルと比較されるため、整合性は保証できません。
私はしたいと思います:
- すべてのデータベースが同じ構造であることを確認してください
- すべての新しい変更を接続のグループに一度に追加し、面倒なことはしません
できれば Propel 独自のメカニズムを使用して、書籍による解決策を探していますが、すべての提案を受け付けています。何でも動作し、安定しています。意見、コメント、実証済みのソリューションは大歓迎です! ソースコードを高く評価