symfony - Doctrine ORM - 从实体中删除属性?
问题描述
我想做的非常简单的事情,但是我找不到解决方案。我已经开始使用与 Doctrine 捆绑的 Symfony4 开发我的应用程序。一开始我设计了数据库模型,但在开发过程中我意识到原始解决方案对于我想要做的事情是错误的。现在,我想从实体中删除一个属性。在普通的 SQL 中,我会ALTER TABLE table DROP COLUMN column
使用新参数再次重新创建它。但是这个解决方案给了我一个 Doctrine 错误,所以我也改变了 PHP 模型。再次,另一个错误。好的,所以这看起来不像我想走的路。除了在教义中挖掘太深之外,我的问题有什么解决方案吗?最好是像上面 SQL 命令中描述的那样简单?
解决方案
当涉及到 symfony 的原则时,你应该忘记表、列等,并开始思考对象(否则使用原则进行抽象是没有意义的)。对于您的问题,您应该简单地删除实体中的属性。
然后你应该使用:
php bin/console doctrine:migrations:diff
这将在 /migrations 文件夹下生成一个迁移文件。该文件将包含学说将执行的 SQL。它允许您验证查询是否符合您的预期,如果不是,您可以直接在该文件中修改它或调整您的实体并生成新的迁移文件。
当你对它感到满意时,你可以执行它:
php bin/console doctrine:migrations:migrate
推荐阅读
- angular - 使用翻译服务和字符串数组应用参数
- asp.net - QuickBooks Online Api 错误“远程服务器返回错误:(400)错误请求”
- php - 将 Laravel/CI 连接到 Docker
- ios - 如何在 UITableView swift 中对嵌套 Xib 中的数据进行分组和显示数据
- javascript - 实现可折叠不消耗点击
- maven - Grails 应用程序运行失败,在编译过程中抛出致命错误 org.apache.tools.ant.BuildException: java.lang.NoSuchMethodError
- html - Textarea 溢出它自己的宽度
- c# - 实体框架一对一关系错误
- typescript - 打字稿:在类型上找不到带有“字符串”类型参数的索引签名
- authentication - Blazor Server .Net Core 身份验证链接到其他数据库表