2015-04-29 4 views
1

Я пытаюсь удалить галерею из галереи.Как удалить galleryhasmedia из галереи sonatamediabundle

Однако у субъекта галереи нету удаленной галереи или чего-то еще.

поэтому я сделал неуклюжий способ, но он не работает.

$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(); 

Я думаю, что если галереяHasMedias - это обычная коллекция массивов.

Я могу удалить элемент с помощью этой процедуры.

Мне нужно сделать что-то еще для galleryhasmedia ??

ответ

1

Вы можете переопределить Галерею объект и добавить эту функцию к нему:

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

galleryHasMedias поля является ArrayCollection, который может быть очищен с помощью четкого метода. Его странное то, что установка пустого массива не очищает работу, но я думаю, что мое решение стоит того.

+0

Спасибо за ответ, но результат такой же. Я предполагаю, что что-то не так с persist not clearing array. Я могу правильно очистить массив объектов, но не могу обновить db. просто гадать, хотя ..... – whitebear

+0

Вы можете попробовать foreach ($ galleryHasMedias как $ media) {$ em-> remove ($ media);} –