首页 > 解决方案 > Doctrine ORM - 从实体中删除属性?

问题描述

我想做的非常简单的事情,但是我找不到解决方案。我已经开始使用与 Doctrine 捆绑的 Symfony4 开发我的应用程序。一开始我设计了数据库模型,但在开发过程中我意识到原始解决方案对于我想要做的事情是错误的。现在,我想从实体中删除一个属性。在普通的 SQL 中,我会ALTER TABLE table DROP COLUMN column使用新参数再次重新创建它。但是这个解决方案给了我一个 Doctrine 错误,所以我也改变了 PHP 模型。再次,另一个错误。好的,所以这看起来不像我想走的路。除了在教义中挖掘太深之外,我的问题有什么解决方案吗?最好是像上面 SQL 命令中描述的那样简单?

标签: symfonydoctrine-orm

解决方案


当涉及到 symfony 的原则时,你应该忘记表、列等,并开始思考对象(否则使用原则进行抽象是没有意义的)。对于您的问题,您应该简单地删除实体中的属性。

然后你应该使用:

php bin/console doctrine:migrations:diff

这将在 /migrations 文件夹下生成一个迁移文件。该文件将包含学说将执行的 SQL。它允许您验证查询是否符合您的预期,如果不是,您可以直接在该文件中修改它或调整您的实体并生成新的迁移文件。

当你对它感到满意时,你可以执行它:

php bin/console doctrine:migrations:migrate

推荐阅读