2015-04-29 25 views
1

我正試圖從gallery中刪除galleryhasmedia。如何從gallery中刪除galleryhasmedia sonatamediabundle

但是畫廊實體沒有removegalleryhasmedia或其他東西。

所以我做了一個笨拙的方式,但它不工作。

$em = $this->getDoctrine()->getManager(); 

$firstGhmArray = $gallery->getGalleryHasMedias(); 
echo count($gallery->getGalleryHasMedias()) // before count 
$afterGhmArray = array(); 
foreach ($firstGhmArray as $ghm){ 

     if ($ghm->getId() == $id){ // id is the target id to delete 
       //delete  
     } 
     else { 
      array_push($afterGhmArray , $ghm); 
     } 
     $gallery->setGalleryHasMedias($afterGhmArray); 
    } 
echo count($gallery->getGalleryHasMedias()) // after count 
$em->persist($gallery); 
$em->flush(); 

我想如果galleryHasMedias是正常的數組集合。

我可以用這個過程刪除元素。

我需要爲galleryhasmedia做更多的事情?

回答

1

您可以覆蓋圖庫實體和這個功能添加到它:

public function clearGalleryHasMedias() 
    { 
     $this->galleryHasMedias->clear(); 
    } 

galleryHasMedias領域是可以使用clear方法來清除一個ArrayCollection。它設置一個空陣列的怪異壽命沒有明確的工作,但我想我的解決方案是值得的拍攝。

+0

感謝您的回覆,但結果是一樣的。我認爲堅持不清除數組有問題。我可以正確清除對象數組,但無法更新數據庫。只是猜測雖然..... – whitebear

+0

你可以嘗試foreach($ galleryHasMedias作爲$ media){$ em-> remove($ media);} –

相關問題