Doctrine 2 迁移工作流程

Posted

技术标签:

【中文标题】Doctrine 2 迁移工作流程【英文标题】:Doctrine 2 Migrations Workflow 【发布时间】:2015-07-04 09:34:39 【问题描述】:

我正在使用 Zend Framework 2 和 Doctrine 2 开发一个 Web 应用程序。我是 Doctrine 2 的新手,尤其是迁移。我想知道在使用它时是否有任何推荐的最佳实践。我正在寻找一些具体的东西:

从开发到部署的推荐工作流程? 您是否在迁移中包含预填充数据? 如果迁移失败,如何处理恢复到以前的版本。

非常感谢!

【问题讨论】:

几个月前我写了an answer for the Propel migrations workflow。我不知道我的实践有多广泛(我自己编的)——每次运行测试时,我都会从迁移中构建单元测试环境。在非开发环境中运行它们之前,它可以提高信心。它不是特别针对 Propel,所以也许这很有趣? 【参考方案1】:

ZF2 的 Doctrine ORM 模块 (DoctrineORMModule) 内置了对 Doctrine ORM 迁移的支持。有a very brief blurb in the documentation about how to configure it。然后,您可以通过模块提供的 CLI 界面(vendor/bin/doctrine-module)访问迁移命令(生成、迁移等)

至于我的个人工作流程,我通常将初始化或预填充数据(您最初在新安装中播种的东西)放入数据库固定装置(which Doctrine ORM also supports 和 there is a ZF2 module for)。

【讨论】:

我是否明确要求 doctrine/migrations 与作曲家一起使用,还是仅使用 doctrine/doctrine-orm-module 就足够了?【参考方案2】:

Doctrine 有 own library for migrations,其中还包括 Symfony 包。

对于 Zend,可能有 some bundle as well(也许在 Github 上搜索更多)

至于你的具体问题:

    没什么特别的。 Symfony bundle documentation 很好地描述了基本工作流程。即使在不同的框架中,我们也以几乎相同的方式使用它。

    是的,所以每个开发人员都有完整的操作系统。对于测试,我们仅使用所需数据最少的数据夹具。

    由这个包自己管理。

【讨论】:

以上是关于Doctrine 2 迁移工作流程的主要内容,如果未能解决你的问题,请参考以下文章

Symfony3.4 / Doctrine迁移 - 驱动程序中发生异常:SQLSTATE [HY000] [2002]没有这样的文件或目录

Symfony 5(Doctrine 2.9),Doctrine 不会为 ManyToOne 自引用关系生成迁移

级联持久性不工作(Doctrine ORM + Symfony 2)

Symfony 和 Doctrine 使迁移无效

工匠迁移错误“类'Doctrine \ DBAL \ Driver \ PDOMySql \ Driver'not found”,

工匠迁移错误“找不到类'Doctrine\\DBAL\\Driver\\PDOMySql\\Driver'”,