从 symfony 4 中彻底删除实体
Posted
技术标签:
【中文标题】从 symfony 4 中彻底删除实体【英文标题】:Completely delete Entity from symfony 4 【发布时间】:2019-06-15 15:43:46 【问题描述】:我正在学习 Symfony 4,并且刚刚遵循了有关数据库和学说的指南,我现在有了一个新实体 Product.php
和一个关联的存储库 ProductRepository.php
以及数据库中的一个新表。我现在想删除这个实体/存储库并相应地更新数据库。
我想我可以简单地删除 Product.php
并运行 php bin/console make:migration:diff
但是,没有任何改变。是否有一些简单的命令列表来删除实体的所有引用(我看不到配置文件中的任何更改 - 我正在使用注释)或者我是否必须确定创建/修改了哪些文件,然后手动删除桌子。
【问题讨论】:
php bin/console make:migration:diff
生成迁移比较数据库和您的信息。 php bin/console doctrine:migrations:migrate
将执行迁移。
幸运的是,php bin/console make:migration:diff
不会删除不在实体中的表。想象一下,您有未在要保留的实体中使用的表。
Deleting table using Doctrine2 and Symfony2的可能重复
【参考方案1】:
您可以手动删除这些文件:
-
src/Entity/Product.php
src/Repository/ProductRepository.php
如果您为您的 Product 实体生成了 CRUD,则必须删除:
-
src/Form/ProductType.php
src/Controller/ProductController.php
templates/product(产品文件夹)
如果您在生产环境中,则必须运行 php bin/console cache:clear
来删除缓存。
在更新您的数据库架构之前请三思。要更新,请运行 php bin/console d:s:u --force
- 但请注意 prod 环境中的含义。
【讨论】:
请不要建议在生产环境中运行doctrine:schema:update
。
我们不知道他是否真的在生产环境中!我只想明确一点,即使我们清除缓存,数据库架构也不会改变 :-)
但是你说“如果你在生产环境中(...)清除缓存(...)。然后运行模式更新” - 这听起来像是在生产中运行这些命令的建议环境以上是关于从 symfony 4 中彻底删除实体的主要内容,如果未能解决你的问题,请参考以下文章