【发布时间】:2019-12-18 17:03:25
【问题描述】:
我经常在 Entity 中更改/添加一些字段并使用bin/console make:migration 来生成迁移,这就像在 Rails 或 Django 中一样方便。但是当我使用教义关系时,我不需要外键约束(ManyToOne,OneToMany...)。
我必须在生成的迁移中删除包含外键约束的行。但是当我对Entity进行一些更改并运行bin/console make:migration时,它会再次添加外键约束,这很烦人。
我不关心数据的一致性。
在Django模型ForeignKey中可以设置db_constraint=False,所以迁移不会产生外键约束。
Doctrine 中是否有类似的设置?
【问题讨论】:
-
很抱歉,正如我在回答中所说,Doctrine 中确实没有内置方法可以做到这一点。如果您真的不想要 FK 并且想使用学说自动生成模式;您必须手动删除这些语句。
-
但是当我创建/更改某些实体迁移时,它会一次又一次地自动生成
Foreign Key Constraint -
是的,它会的。如果使用 Doctrine 生成修改模式,则会生成这些 FK 约束。同样,正如我在回答中所说,Doctrine 不支持在关系后端不使用 FK 的情况下进行关联映射。
-
您可以使用附加到
postGenerateSchema事件的侦听器中的一些代码来执行此操作。看我的回答。