Doctrine:删除实体而不加载

时间:2012-09-02 19:43:22

标签: symfony doctrine

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

我的意思的一个例子:

// 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

1 个答案:

答案 0 :(得分:0)

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

$foo->setBar(null);
$entityManager->persist($foo);
在你进行冲洗之前