我有两个实体Foo
和Bar
,Bar
与manyToOne
Foo
有一个名为$foo
和Foo
的{{1}}关联具有逆关联,oneToMany
关联称为$bars
和。并且在任何一方都定义了没有cascade
操作。现在我的问题是,如果我获取一个Foo
实例$foo
,然后使用Bar
创建并保留一些$bar->foo = $foo
个实例,并将它们保留到Entity Manager
并且刷新,然后如果我从存储库重新提取$foo
,则$foo->bars
不会包含我刚创建的Bar
个实例(除非我调用{ {1}}首先。
另一方面,如果我通过调用$entityManager->detach($foo)
和刷新 Bar
删除与$foo
相关的一些$em->remove($bar)
实体,那么如果我重新提取{{ 1}}来自存储库,我删除的Entity Manager
个实例不再存在于$foo
属性中。我会用一些代码解释一下。
Bar
$bars
我想知道这是否是预期的行为。
答案 0 :(得分:2)
想要评论,但仍然不能根据我的声誉: - (
但我很确定这会回答你的问题:“当更新双向关联时,Doctrine只检查双方中的一方是否有这些更改。这称为关联的拥有方。”
查看文档中的关联:http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-associations.html,尤其是http://doctrine-orm.readthedocs.org/en/latest/reference/unitofwork-associations.html