我有一個多語言應用程序,每個語言數據在一個單獨的數據庫中。這是它是如何在Symfony的2.2配置和(從配置關鍵propel.dbal.connections
節選)推進1.6:在propel中遷移多個相同的數據庫
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
連接指向我的默認語言。所有其他數據庫都具有與我的默認相同的結構。我有一個general-schema.xml
配置了所有型號。
當我嘗試生成diff(propel:migration:generate-diff
)或執行遷移(propel:migration:migrate
)時,問題就開始了。 Propel不知道這些連接是兄弟連接,並且與general
連接有關的任何連接也應在每個連接上執行。另外,在執行差異時,只有默認數據庫與架構/模型進行比較,因此我無法保證完整性。
我想:
- 確保所有數據庫都具有相同的結構
- 一次,沒有太多的麻煩添加到一組連接的所有新變化
我正在尋找一個通過本書的解決方案,最好使用Propel自己的機制,但我願意接受所有建議。無論工作和穩定。意見,評論和成熟的解決方案非常受歡迎!源代碼讚賞
將所有語言表放在同一個數據庫中可能更容易嗎? – halfer
我認爲它會變得更糟。生成的遷移將具有'改變表用戶' - 我無法輕易將它應用於'user_en','user_fr','user_es'等。 –