Doctrine2:删除和持久化相关实体的不同行为

时间:2015-08-10 07:17:26

标签: mysql doctrine-orm

我有两个实体FooBarBarmanyToOne Foo有一个名为$fooFoo的{​​{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

我想知道这是否是预期的行为。

1 个答案:

答案 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