2012-09-02 73 views
0

我想刪除的對象是另一個對象的屬性,但我這樣做時,我得到一個異常說學說:刪除實體,無負載

一個例子說明我的意思「實體沒有被發現。」 :

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

回答

0

問題是,當您刷新實體管理器時,Foo仍然具有Bar作爲屬性。做

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

在此之前沖洗

+0

是的,這是有道理的!感謝那! – steveYeah