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