0

我想删除一个对象,它是另一个对象的属性,但是当我这样做时,我得到一个异常说“找不到实体”。</p>

我的意思的一个例子:

// Foo has a private property, bar, which is an instance of Bar
$foo = $this->get('my_bundle.repository.foo')->find($fooId);
$bar = $foo->getBar();

$entityManager = $this->get('doctrine.orm.entity_manager');
$entityManager->remove($bar);
$entityManager->flush();

我猜这是因为实体管理器没有Bar直接加载的实例,因为以下似乎有效:

// Foo has a private property, bar, which is an instance of Bar
$foo = $this->get('my_bundle.repository.foo')->find($fooId);
$bar = $this->get('my_bundle.repository.foo')->find($bar->getId());

$entityManager = $this->get('doctrine.orm.entity_manager');
$entityManager->remove($bar);
$entityManager->flush();

有没有办法在不重新加载的情况下完成这项工作$bar

4

1 回答 1

0

问题是当您刷新实体管理器时 Foo 仍然具有 Bar 作为属性。做

$foo->setBar(null);
$entityManager->persist($foo);

在你冲水之前

于 2012-09-02T21:21:19.780 回答