我正在使用 Symfony 2.3 开发一个应用程序,必须为不同的客户安装它。我们将提供不同的功能,因此我们的想法是将功能/捆绑包与主应用程序分开,并使用 Composer 将其加载到项目中。当我们使用 Doctrine Migrations 来维护跨版本的数据库更改时,我不确定如何从捆绑包中使用它们。我们正在使用 Capifony 将应用程序部署到实时服务器。
所以我的问题是......我怎样才能从作曲家加载的包中自动执行迁移?
我正在使用 Symfony 2.3 开发一个应用程序,必须为不同的客户安装它。我们将提供不同的功能,因此我们的想法是将功能/捆绑包与主应用程序分开,并使用 Composer 将其加载到项目中。当我们使用 Doctrine Migrations 来维护跨版本的数据库更改时,我不确定如何从捆绑包中使用它们。我们正在使用 Capifony 将应用程序部署到实时服务器。
所以我的问题是......我怎样才能从作曲家加载的包中自动执行迁移?
我最终创建了一个命令,它将所有迁移文件从捆绑包中的预定义目录复制到默认位置,然后从命令中执行教义:迁移:迁移。
对于复杂的部署,我使用了 phing。他很容易与 Symfony 控制台集成。但最后我在 Synfony 控制台上使用了一个简单的代码。Composer 可以轻松地将 Symfony 应用程序命令称为“post-install-cmd”
我不认为“作曲家加载的捆绑包”是这里的问题。例如,您可能在src/
(应用程序或子模块的一部分)中有多个捆绑包,并且遇到完全相同的问题。问题在于您的不同捆绑包有多个实体管理器和数据库。他们实际居住的地方是微不足道的。
无论如何,我遇到了完全相同的问题。经过一番搜索,我发现实际上有一个开放的拉取请求来解决这个问题:https ://github.com/doctrine/DoctrineMigrationsBundle/pull/46
我希望它很快得到修复!