Doctrine orm 学说2中的关系

Doctrine orm 学说2中的关系,doctrine-orm,Doctrine Orm,我确实没有得到教义上的联想。我想知道单向关系和双向关系的区别。在条令2中,什么是拥有方和反向方?双向和单向关系 双向和单向是关于PHP对象中的引用 如您所见,单向引用和双向引用的数据库模式实际上是相同的。区别在于: 单向:A类对象指的是B类对象,而不是B类对象 双向:A类对象指B类对象,B类对象指A类对象 逆边与拥有边 拥有和反向端的概念是关于将对象模型更改持久化到数据库。这是详细的解释 简而言之,原则2不跟踪对象模型的变化。假设您有两个Clasee: 父项和子项。类父类具有集合子类。类“

我确实没有得到教义上的联想。我想知道单向关系和双向关系的区别。在条令2中,什么是拥有方和反向方?双向和单向关系 双向和单向是关于PHP对象中的引用

如您所见,单向引用和双向引用的数据库模式实际上是相同的。区别在于:

  • 单向:A类对象指的是B类对象,而不是B类对象
  • 双向:A类对象指B类对象,B类对象指A类对象

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

简而言之,原则2不跟踪对象模型的变化。假设您有两个Clasee:
父项
子项
。类
父类
具有集合
子类
。类“Child”具有引用
parent
。以下代码将使数据模型不一致:

$parent = new Parent();
$child = new Child();
$parent->children->add($child);
在实体类中使用公共属性是一个坏主意,这是非常不鼓励的,但出于演示的原因,这是可以的。因此,下面的代码将
$child
添加到
$parent
,但没有设置
$child->parent
。域模型变得不一致(这就是《条令手册》推荐的原因),但仍然可以将该对象持久化到数据库中

这就是拥有和反向边的概念变得重要的地方。该原则将根据拥有方的状态来维持实体关系。因此,在我们的示例中,
$parent
=>
$child
关系将是:

  • 如果拥有方是
    父级
    类,则保持
  • 忽略,如果拥有方是
    子类
请注意,拥有方标记为inversedBy relatioship注释

在选择拥有方和反向方时存在一个问题