【发布时间】:2015-08-19 14:26:55
【问题描述】:
我有一个实体,比如说 A。还有一个 B。
A={id,name} B={id,details}
我想要一对一的关系。基本上,对于 A 中的每个 x,B 中必须恰好有一个 y,反之亦然。于是我想到了解决办法,想出了以下办法。
1。 id 是共享的。
但是基本上它会像这样。
A={same_id,name} B={same_id,details} same_id is unique
- B 将拥有一个外键,用于从 same_id 到 A.same_id。
- 或者 A 将拥有一个外键,用于将 same_id 转换为 B.same_id
但我希望能够从 A 那里获得详细信息。 基本上是在做 $a->getAB()->getDetails(); 这意味着我们需要实现 2)。
但这听起来违反直觉,因为这意味着必须首先创建一个新的 B 实体,然后创建一个 A 实体并将其指向 B 实体。
看起来 B 拥有 A - 这不是我想要的。
反过来——如果 B 有 A 的外键,我还能告诉 A B 的存在吗,所以我可以 $a->getAB()->getDetails(); ?
2。 B 有另一个 id,A 有一个外键:
所以它会像:A={id,name,bId} B={bId,details} bId is unique, id is unique
但是以这种方式 - 我似乎在为 A 浪费一列。 B 不会知道它也附加到 A,这可能是一种不好的做法。
编辑:但这并不能解决任何问题,只是注意到我必须再次创建 B,因为来自 A 的任何 x 都需要指向来自 B 的有效 y。
3。是我的映射自动生成的问题吗?
目前我正在从我的 MySQL 数据库生成我的 XML 映射和实体类。
难道这一代不会自动告诉 A 是否 B 有外键?
【问题讨论】:
标签: php mysql doctrine-orm