学说和多个实体协会



使用学说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

相关内容

  • 没有找到相关文章

最新更新