学说中的关系2

Jai*_*min 4 doctrine-orm

我很遗憾没有得到学说的联想.我想知道单向和双向关系有什么区别.在学说2中拥有一面和反面的是什么

J0H*_*0HN 15

双向和单向关系

双向和单向是关于PHP对象中的引用.

正如您在此处看到的,单向和双向引用的数据库模式实际上是相同的.不同之处是:

  • 单向:类A的对象引用类B的对象,但反之则不然.
  • 双向:类A的对象引用类B的对象,类B的对象引用类A的对象

反向和拥有方

拥有和反向的概念是关于将对象模型更改持久化到数据库.是详细的解释.

简而言之,Doctrine 2不跟踪对象模型的变化.让我们说你有两个clasees: ParentChild.班级Parent有收藏children.班级'孩子'有参考parent.以下代码将使您的数据模型不一致:

$parent = new Parent();
$child = new Child();
$parent->children->add($child);
Run Code Online (Sandbox Code Playgroud)

在实体类中使用公共属性是一个坏主意,而且非常气馁,但出于演示原因,它是可以的.所以,下面的代码添加$child$parent,但没有设置$child->parent.域模型变得不一致(这就是Doctrine手册建议将关联逻辑封装到实体模型中的原因),但仍然可以将该对象持久保存到DB.

这就是拥有和反面的概念变得重要的地方.学说将根据拥有方的状态保持实体关系.所以,在我们的例子中,$parent=> $child关系将是:

  • 坚持,如果拥有的一方是Parent阶级
  • 忽略,如果拥有的一方是Child阶级

请注意,拥有方标有反向关联注释.

有关选择拥有和反面的建议.