Как удалить галерею hasmedia из галереи sonatamediabundle

Я пытаюсь удалить галерею hasmedia из галереи.

Однако объект галереи не имеет 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??


person whitebear    schedule 29.04.2015    source источник


Ответы (1)


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

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

Поле GalleryHasMedias представляет собой коллекцию ArrayCollection, которую можно очистить с помощью метода clear. Странно, что установка пустого массива не очищает работу, но я думаю, что мое решение того стоит.

person Nawfal Serrar    schedule 29.04.2015
comment
Спасибо за ответ, но результат тот же. Я предполагаю, что что-то не так с сохранением не очищающего массива. Я могу правильно очистить массив объектов, но не могу обновить базу данных. хотя предположил..... - person whitebear; 30.04.2015
comment
Вы можете попробовать foreach($galleryHasMedias as $media){$em-›remove($media);} - person Nawfal Serrar; 30.04.2015