我有一个这样的数据库表:
现在,我想在州,城市和村庄之间进行一对多的自我引用。
每个州都有很多城市,每个城市都有很多村庄。
请注意,城市有两种关系:
许多城市 - >一个州
一个城市 - >许多村庄
我应该如何使用Doctrine yml配置,实体注释和表单?
答案 0 :(得分:3)
我同意@GreenLeaf,你的模型是错误的。无法区分模型的两个记录如何保持常识。
首先,您可能想了解数据库规范化: http://en.wikipedia.org/wiki/Database_normalization
其次,如果你真的坚持保持你的数据完整,你可以尝试制作ManyToMany reations,这样doctrine会创建3个额外的表,你可以通过定义正确的字段名来区分关系类型。在这里阅读:http://docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html让你可以试试你的桌子“区”:
/**
* @ManyToMany(targetEntity="Districts")
* @JoinTable(name="Cities",
* joinColumns={@JoinColumn(name="state_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="city_id", referencedColumnName="id")}
* )
*/
/**
* @ManyToMany(targetEntity="Districts")
* @JoinTable(name="Villages",
* joinColumns={@JoinColumn(name="city_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="village_id", referencedColumnName="id")}
* )
*/
这可能适合你