(如果需要,制作这个 CW)我们是两个开发基于(PHP5、ZF、Doctrine、MySQL5)的 Web 应用程序的开发人员。我们每个都使用本地网络服务器和本地数据库。数据库模式在 YAML 文件中定义。
使我们的数据库模式保持同步的最佳方法是什么?
我们是这样做的:每当开发人员“A”进行更改时,他都会生成一个迁移类。然后他提交迁移文件,开发者“B”执行迁移类。
但是在每个数据库更改上创建一个迁移类是一个相当乏味的过程。
你有更好的解决方案吗?
我不知道您在 Zend Framework with Doctrine 中的表现如何。下面是我在 Symfony 中使用 Propel 的方法。尽管确切的程序可能会有所不同,但基本概念是相同的。
我对我的 DAL 进行了单元测试。
每当架构更改时,我们都会检查 yml 和生成的 ORM 代码(您确实有源代码控制,不是吗)。我将签到设置为自动模式,这意味着我将立即获得所有签到。
如果架构更改不会影响我的事情,那么我会忽略这些更改。但是如果架构更改破坏了我的东西,那么我将使用symfony propel build command重建我的表单、ORM 类等等。重建这些基础设施只是一个命令行的事情,所以对我来说没有问题。
最后,在重建之后,我将运行我的单元测试,以确保一切正常。如果没有,我最好把它们修好!
我看到这个问题已经得到解答,但是 Doctrine 可以为您迁移您的数据库,而不必吹走整个事情。我们将其用于每个模式更改,其中一个开发人员更改他/她的本地 yaml 文件,在本地生成新模型,使用 Doctrine 创建迁移,在本地运行该迁移以更改数据库,然后签入新的 yaml 文件和迁移。然后其他开发人员检查更改的 yaml 文件和迁移,然后他们生成新模型并运行迁移以同步他们的数据库。将代码部署到我们的 QA 和生产环境的过程几乎相同。
更多关于教义迁移的信息可以在教义网站上找到。