我很遗憾没有得到学说的联想。我想知道单向和双向关系有什么区别。什么是学说2中的拥有方和反方
答案 0 :(得分:15)
双向和单向是关于PHP对象中的引用。
正如您所看到的here,单向和双向引用的数据库模式实际上是相同的。区别在于:
拥有和反向的概念是关于将对象模型更改持久化到数据库。 Here是详细解释。
简而言之,Doctrine 2不跟踪对象模型的变化。让我们说你有两个clasees:
Parent
和Child
。类Parent
具有集合children
。 “孩子”类有参考parent
。以下代码将使您的数据模型不一致:
$parent = new Parent();
$child = new Child();
$parent->children->add($child);
在实体类中拥有公共属性是一个坏主意,而且非常气馁,但出于演示原因,它没关系。因此,以下代码将$child
添加到$parent
,但未设置$child->parent
。域模型变得不一致(这就是Doctrine手册推荐incapsulate association logic into entity models)的原因,但仍然可以将这些对象持久保存到数据库中。
这就是拥有和反面的概念变得重要的地方。学说将根据拥有方的状态保持实体关系。因此,在我们的示例中,$parent
=> $child
关系将为:
Parent
类Child
class 请注意,拥有方标有 inversedBy relatioship批注。
挑选拥有和反面有recommendation。