我目前正在将Symfony2与Doctrine一起使用。我直接向数据库中添加了一些外键,而没有在 Doctrine 中使用关系。似乎每次我执行doctrine:schema:update --force
时,我所有的外键都会被删除。这是通过运行 doctrine:schema:update --dump-sql
来验证的。
有没有办法防止原则丢弃手动创建的外键?或者有没有办法使用没有关系的注释创建外键?
像 sgoettschkes 一样,我认为不可能完全按照您的要求去做(但您可以为未来的版本写一张票!我什至没有找到一个,这似乎是一个好主意..!
我不这么认为。您应该决定是使用 原则 100% 由它定义数据库架构,还是根本不使用更新(手动更改数据库)。
- Sgoettschkes
但是,在那之前,我建议您使用本机SQL编写一个脚本,并在(之后)您的学说模式:更新内容中运行它。
您不应该在生产中使用 doctrine:schema:update,请查看要在生产环境中运行的 Doctrine 迁移,以便您确切地知道部署后正在运行哪些查询。
您可以手动添加索引或手动重命名索引。更新架构功能旨在在开发过程中使用,您可以在其中频繁地在架构的不同版本之间切换,并且数据库内容的价值要低得多。如果您想在开发中测试索引,您可以手动为此类索引重新创建它们,但我相信这些情况不会经常发生。
我不知道你为什么不想定义关系,因为它所做的只是创建这个索引,以及可以通过查询禁用的其他功能。