使用学说2和Symfony在这里。我是学说的新手,找不到他们在他们的文档中寻找的东西,因此我在寻找有关情况的指导。
我有这些实体:1.个人资料(一个人的个人资料,一个人可以有很多地址)2.学校(学校信息,学校可以有很多地址)3.地址(所有地址,与上述实体之一相关联)
以前,我有个人资料,ProfilEaddress,School,Schooladdress,它们效果很好,但是我宁愿有一个课程/表来进行地址更新,因为我可能会将其他实体带到路上,这也需要地址。另外,如果我的地址格式更改,我只想更改一个类/表,而不是许多。
我的问题是...是否有可能将两个(或更多)不同的实体与一个实体相关联?这是我期望在实际表中看到的数据的示例。
- profiles-
|id|fname |lname|
| 1|John |Smith|
| 2|Jane |Jones|
- 学校 -
|id|name |type |
| 1|City College |University |
| 2|Greendale |Community College|
- addresses-
|id|src_id|src |type |address1 |address2|
| 1| 1|profiles|maling |PO BOX 555 | |
| 2| 1|profiles|physical|123 W. Main St. |Apt A |
| 3| 1|schools |physical|541 University Way| |
| 4| 2|schools |physical|111 Winger Ave | |
这是有可能的吗?如果是这样?还是我可以设计这个更好的方法?在这种情况下,其他人做了什么?
非常可能,您只需要2个映射表,因此,您将拥有一个profile_address和school_address表中的源列。您需要指定从个人资料到地址和学校的单向(一种方式)。
编辑:
在赋予用户角色的标准示例中:
/**
* @ORMManyToMany(targetEntity="Role")
* @ORMJoinTable(name="user_role",
* joinColumns={@ORMJoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORMJoinColumn(name="role_id", referencedColumnName="id")}
* )
*/
protected $roles;
现在说您想拥有另一个对象,假设旁观者也想担任角色,您将拥有:
/**
* @ORMManyToMany(targetEntity="Role")
* @ORMJoinTable(name="bystander_role",
* joinColumns={@ORMJoinColumn(name="bystander_id", referencedColumnName="id")},
* inverseJoinColumns={@ORMJoinColumn(name="role_id", referencedColumnName="id")}
* )
*/
protected $roles;
这就是全部。
看起来我只是不知道要使用的正确单词。我找到了具有我需要的文档的文档和/或单个表继承的文档。
文档此处:http://docs.doctrine-project.org/en/latest/reference/inheritance-mapping.html