如何从画廊sonatamediabundle中删除galleryhasmedia

问题描述 投票:0回答:1

我正在尝试从画廊中删除 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 做更多的事情??

php symfony sonata-admin sonata sonata-media-bundle
1个回答
1
投票

您可以覆盖 Gallery 实体并向其添加此功能:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.