Symfony2,Doctrine2:多个自引用一对多关系
我有这样一个数据库表: 现在,我想在州、城市和村庄之间进行一对多的自我引用 每个州有许多城市,每个城市有许多村庄 请注意,城市有两种关系:Symfony2,Doctrine2:多个自引用一对多关系,symfony,doctrine-orm,doctrine,symfony-2.1,symfony-2.3,Symfony,Doctrine Orm,Doctrine,Symfony 2.1,Symfony 2.3,我有这样一个数据库表: 现在,我想在州、城市和村庄之间进行一对多的自我引用 每个州有许多城市,每个城市有许多村庄 请注意,城市有两种关系: 多个城市->一个州 一个城市->多个村庄 我应该如何使用yml配置、实体注释和表单来实现这一点?我同意@GreenLeaf的观点,即您的模型是错误的。要保持常识,就不可能区分模型的两个记录是如何关联的 首先,您可能想了解数据库规范化: 第二,如果你真的坚持保持数据的完整性,你可以尝试进行许多创建,这样条令会创建3个额外的表,在那里你可以通过定义适当的
- 多个城市->一个州
- 一个城市->多个村庄
我应该如何使用yml配置、实体注释和表单来实现这一点?我同意@GreenLeaf的观点,即您的模型是错误的。要保持常识,就不可能区分模型的两个记录是如何关联的 首先,您可能想了解数据库规范化: 第二,如果你真的坚持保持数据的完整性,你可以尝试进行许多创建,这样条令会创建3个额外的表,在那里你可以通过定义适当的字段名来区分关系的类型。阅读此处:让我们将您的表格命名为“Districts”,您可以尝试:
/**
* @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")}
* )
*/
这可能适合你我同意@GreenLeaf的观点,你的模型是错误的。要保持常识,就不可能区分模型的两个记录是如何关联的 首先,您可能想了解数据库规范化: 第二,如果你真的坚持保持数据的完整性,你可以尝试进行许多创建,这样条令会创建3个额外的表,在那里你可以通过定义适当的字段名来区分关系的类型。阅读此处:让我们将您的表格命名为“Districts”,您可以尝试:
/**
* @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")}
* )
*/
这可能适合你我同意@GreenLeaf的观点,你的模型是错误的。要保持常识,就不可能区分模型的两个记录是如何关联的 首先,您可能想了解数据库规范化: 第二,如果你真的坚持保持数据的完整性,你可以尝试进行许多创建,这样条令会创建3个额外的表,在那里你可以通过定义适当的字段名来区分关系的类型。阅读此处:让我们将您的表格命名为“Districts”,您可以尝试:
/**
* @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")}
* )
*/
这可能适合你我同意@GreenLeaf的观点,你的模型是错误的。要保持常识,就不可能区分模型的两个记录是如何关联的 首先,您可能想了解数据库规范化: 第二,如果你真的坚持保持数据的完整性,你可以尝试进行许多创建,这样条令会创建3个额外的表,在那里你可以通过定义适当的字段名来区分关系的类型。阅读此处:让我们将您的表格命名为“Districts”,您可以尝试:
/**
* @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")}
* )
*/
<>这可能对你工作你的模型是错误的,考虑做3个实体:状态,锡蒂和自然村。然后,你将能够轻松地将它们与多个关系联系起来。+ 1 @ GrimeLe你是正确的,如果我可以添加建议:创建一个树模型,我想它会被容易地理解,很容易与真实生活状态->城市>村庄-你的模型是错误的,考虑做3个实体:州,锡蒂和自然村。然后,你将能够轻松地将它们与多个关系联系起来。+ 1 @ GrimeLe你是正确的,如果我可以添加建议:创建一个树模型,我想它会被容易地理解,很容易与真实生活状态->城市>村庄-你的模型是错误的,考虑做3个实体:州,锡蒂和自然村。然后,你将能够轻松地将它们与多个关系联系起来。+ 1 @ GrimeLe你是正确的,如果我可以添加建议:创建一个树模型,我想它会被容易地理解,很容易与真实生活状态->城市>村庄-你的模型是错误的,考虑做3个实体:州,锡蒂和自然村。然后,你就可以很容易地将它们与多个关系联系起来。+1@GreenLeaf你是对的,如果我可以添加建议的话:创建一个树模型,我想它很容易理解,很容易与现实生活中的状态->城市->村庄相比较。我编辑了我的模型,创建了3个具有一对多关系的实体,但问题仍然是它是什么!我编辑了我的模型,创建了3个具有一对多关系的实体,但问题仍然是它是什么!我编辑了我的模型,创建了3个具有一对多关系的实体,但问题仍然是它是什么!我编辑了我的模型,创建了3个具有一对多关系的实体,但问题仍然是它是什么!