迁移和重新生成Symfony 3实体的最佳方法

迁移和重新生成Symfony 3实体的最佳方法,symfony,migration,Symfony,Migration,我正在学习Symfony 3,想知道创建迁移,然后根据数据库迁移中更改的模式重新生成实体的最佳方法是什么 目前,我所做的是: 安装此捆绑包: "doctrine/doctrine-migrations-bundle": "^1.0" 更改了我的条令.orm.yml文件中的字段 在windows命令行中,我写道: php bin/console doctrine:migrations:diff 然后 这成功地创建了一个迁移,其中包含一个名为“迁移版本”的新表和一个同名的新实体 我现在的问题是,

我正在学习Symfony 3,想知道创建迁移,然后根据数据库迁移中更改的模式重新生成实体的最佳方法是什么

目前,我所做的是: 安装此捆绑包:

"doctrine/doctrine-migrations-bundle": "^1.0"
更改了我的
条令.orm.yml
文件中的字段

在windows命令行中,我写道:

php bin/console doctrine:migrations:diff
然后

这成功地创建了一个迁移,其中包含一个名为“迁移版本”的新表和一个同名的新实体

我现在的问题是,已经更改的实体仍然有旧数据,我希望新的迁移能够更新这个特定的实体,而这里我被卡住了

我是否要手动删除它并在命令行中键入

php bin/console doctrine:generate:entities AppBundle

谢谢您的帮助。

首先,迁移只会影响您的数据库。
migrations\u versions
是Symfony存储信息的内部表,您无需为此表操心

迁移的工作流程如下所示:

  • 更改映射(EntityName.orm.yml)
  • 运行
    原则:生成:实体AppBundle:EntityName
    (这将使用新字段创建实体)
  • 运行
    原则:迁移:diff
    (这将自动检查差异,并创建一个会影响数据库的迁移)
  • 运行
    doctrine:migrations:migrate
    将更改持久化到数据库
  • 您使用
    原则生成的实体:generate:entities
    与迁移概念无关(它只是带有php对象的db表的映射)

    生成实体时,Symfony会检测新字段(来自EntityName.orm.yml)并在实体类中附加这些字段的setter/getter。Simfony不会从实体类中删除旧内容,因为您可以在实体类中添加自己的逻辑,并且不希望在命令运行后将其删除。如果要删除它们,只需手动执行,或者如果没有在其中添加任何逻辑,则只需删除文件并重新运行
    原则:生成:实体


    希望有帮助

    您是否为表创建了实体?据我所知,您不希望丢失数据。实际上,您必须改进您的迁移,使它能够满足您的需要,并在紧急情况下保持回滚的方式。如果你描述一下你有什么样的改变,我会尽力帮助你。
    php bin/console doctrine:generate:entities AppBundle