如何从gallery sonatamediabundle中删除galleryhasmedia

时间:2015-04-29 01:43:00

标签: symfony sonata-admin sonata sonata-media-bundle

我正在尝试从图库中删除galleryhasmedia。

然而,图库实体没有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 个答案:

答案 0 :(得分:1)

您可以覆盖图库实体并将此功能添加到其中:

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

galleryHasMedias字段是一个ArrayCollection,可以使用clear方法清除它。设置一个空数组的奇怪之处并不能说清楚工作,但我想我的解决方案值得一试。