我有一个多语言应用程序,每个语言数据在一个单独的数据库中。这是它是如何在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'等。 –