我有一个多语言应用程序,每种语言数据都在一个单独的数据库中。这是它在 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
连接指向我的默认语言。所有其他数据库的结构与我的默认结构完全相同。我有一个general-schema.xml
配置了所有模型的。
当我尝试生成差异 ( propel:migration:generate-diff
) 或执行迁移 ( propel:migration:migrate
) 时,问题就开始了。Propel 不知道这些连接是同级的,与general
连接相关的任何事情也应该在每个LANG_general
连接上执行。此外,在进行差异时,仅将默认数据库与架构/模型进行比较,因此我无法保证完整性。
我想:
- 确保所有数据库具有相同的结构
- 一次将所有新更改添加到一组连接中,没有太多麻烦
我正在寻找一个按章办事的解决方案,最好使用 Propel 自己的机制,但我愿意接受所有建议。任何有效且稳定的东西。非常欢迎提出意见、评论和经过验证的解决方案!源代码赞赏