Doctrine 2如何防止丢弃外键

时间:2012-10-08 05:55:14

标签: symfony doctrine-orm

我目前正在使用Symfony2和Doctrine。我直接在我的数据库中添加了一些外键而不使用Doctrine中的关系。似乎每次我执行doctrine:schema:update --force时,我的所有外键都将被删除。通过运行doctrine:schema:update --dump-sql验证了这一点。

有没有办法可以阻止教义放弃手动创建的外键?或者有没有办法可以使用没有关系的注释创建外键?

2 个答案:

答案 0 :(得分:2)

sgoettschkes一样,我认为不可能完全按照你要求的那样做(但是你可以为未来的版本写一张关于它的票!我甚至找不到它,它看起来很好想法..):

  

我不这么认为。您应该在使用doctrine和使用100%定义的数据库模式之间做出决定,或者根本不使用更新(手动更改数据库)。

然而,在那之前,我建议你使用原生SQL编写一个脚本并在你的学说模式中(之后)运行它:更新内容。

答案 1 :(得分:0)

您不应该使用doctrine:schema:在生产中更新,看看Doctrine Migrations在生产环境中运行,这样您就可以确切地知道在部署之后您正在运行哪些查询。

您可以手动添加索引或手动重命名。更新架构功能旨在用于开发期间,您可以经常在不同版本的架构之间进行更改,并且数据库的内容价值低得多。如果你想在开发中测试索引,你可以手动重新创建它们,但我相信这些情况不会经常发生。

我不知道为什么你不想定义一个关系,因为它所做的只是创建这个索引,以及其他可以通过查询禁用的功能。