更新 Symfony 4 中的实体?

Update an entity in Symfony 4?

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

php bin/console make:entity

此实体是具有少量属性(名称 - 电子邮件 - 密码)的用户

插入字段后,我进行了迁移,因此我的 table 已使用这些命令行在数据库中创建:

php bin/console make:migration

php bin/console doctrine:migration:migrate

但现在我只想将 name 更改为 username 但我不知道该怎么做。

我没有在文档中找到任何内容,因此非常感谢您的帮助。

您可以遵循类似的模式:

  1. 将您的 User 实体中的字段(注释)从名称更改为用户名
  2. 运行 bin/console doctrine:migrations:diff
  3. 运行 bin/console doctrine:migrations:migrate

doctrine:migrations:diff 命令应该检测到该字段已更改并为您创建相应的 SQL 查询,然后将其存储在原始文件旁边的 DoctrineMigrations 文件中。

doctrine:migrations:migrate 通过检查 doctrine_versions table 来检测这个新的迁移,并且它以前没有执行过,其中存储了所有已执行的迁移版本。

另请参阅:https://www.doctrine-project.org/projects/doctrine-migrations/en/2.1/reference/generating-migrations.html#diffing-using-the-orm

注意: 在实体发生任何更改后,您必须生成新的迁移文件。事实上,此文件包含所有必须对要更新的数据库进行的更改。 要生成此文件(新迁移版本),您可以执行以下命令:

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

在上面的命令之后你成功的生成了你的新版本文件,现在如果你运行下面的命令,你可以看到你有一个新的没有执行的版本文件:

$ bin/console doctrine:migrations:status

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

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

现在您的数据库已更新,在 table migration_versions 中您可以看到已添加新版本。

成功。