【问题标题】:Update an entity in Symfony 4?更新 Symfony 4 中的实体?
【发布时间】:2019-07-27 04:33:17
【问题描述】:

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

php bin/console make:实体

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

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

php bin/console make:迁移

php bin/控制台原则:迁移:迁移

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

我没有在文档中找到任何内容,因此我们将不胜感激。

【问题讨论】:

    标签: php symfony entity symfony4


    【解决方案1】:

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

    $ 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 中您可以看到已添加新版本。

    取得成功。

    【讨论】:

      【解决方案2】:

      您可以遵循类似的模式:

      1. User-entity 中的字段(注释)从名称更改为用户名
      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-11
        相关资源
        最近更新 更多