在Symfony 4中更新实体?

3

我的问题很简单,但是我找不到一个好的答案,我用命令行创建了一个实体:

php bin/console make:entity

这个实体是用户(User),有几个属性(姓名-电子邮件-密码)

在插入字段后,我进行了迁移,使用以下命令行创建了数据库中的表:

php bin/console make:migration

php bin/console doctrine:migration:migrate

但现在我想把 name 改成 username ,但我不知道该怎么做。

我在文档中没有找到任何信息,所以希望得到任何帮助。

2个回答

8

注意:在您的实体类做出任何更改之后,您必须生成新的迁移文件。实际上,此文件包含所有必须完成的更改以更新数据库。 要生成该文件(新的迁移版本),您可以按照以下命令进行操作:

$ bin/console doctrine:cache:clear-metadata
$ bin/console doctrine:migrations:diff

在上述命令执行后,您成功生成了新版本文件。现在如果运行下面的命令,您会发现有一个新的未执行的版本文件:
$ bin/console doctrine:migrations:status

最后,要执行新版本文件并更新您的数据库,您必须运行以下命令:

$ bin/console doctrine:migrations:migrate --all-or-nothing

现在你的数据库已经更新,在表 migration_versions 中可以看到新版本已经被添加。

取得成功。


6
您可以按照类似的模式进行操作:
  1. User实体中的字段(注释)从name更改为username
  2. 运行bin/console doctrine:migrations:diff
  3. 运行bin/console doctrine:migrations:migrate
doctrine:migrations:diff命令应该会检测到字段的变化,并为您创建相应的SQL查询,然后将其存储在DoctrineMigrations文件中,该文件位于原始文件旁边。 doctrine:migrations:migrate通过检查doctrine_versions表来检测此新迁移是否尚未执行,该表存储了已执行的所有迁移版本。
另请参见:https://www.doctrine-project.org/projects/doctrine-migrations/en/2.1/reference/generating-migrations.html#diffing-using-the-orm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接