gpt4 book ai didi

symfony - 在奏鸣曲管理员中使用额外字段坚持多对多

转载 作者:行者123 更新时间:2023-12-04 08:47:45 25 4
gpt4 key购买 nike

多媒体、图库和多媒体图库。

Multimedia 和 Gallery 都与 GalleryMultimedia 具有一对多关系,GalleryMultimedia 包含 multimedia_id、gallery_id 和 position。

在我的 MultimediaAdmin 中,我添加了以下画廊列表:

->with('Thematic Galleries')
->add('gallery', 'entity', array(
'class' => 'ACME\MyBundle\Entity\Gallery',
'property' => 'name',
'multiple' => true,
'expanded' => true,
'mapped' => false,))
->end()

现在我一直坚持将选定的画廊作为 GalleryMultimedia 对象。在我的多媒体模型中,我有下面的函数,我很想传递 GalleryMultimedia 对象以进行持久化,但不知道如何传递。

public function setGalleries($galleries)
{
if (count($galleries) > 0) {
foreach ($galleries as $gallery)
{
$this->addGallery($gallery);
}
}
return $this;
}

出于绝望,我在 MultimediaAdmin.php 中添加了以下代码

public function prePersist($multimedia)
{
$this->preUpdate($multimedia);
}

public function preUpdate($multimedia)
{
$multimedia->setFiles($multimedia->getFiles());
$this->saveGalleries($multimedia);
}

public function saveGalleries($multimedia)
{
$galleryies = $this->getForm()->get('gallery')->getData();
$container = $this->getConfigurationPool()->getContainer();
$em = $container->get('doctrine')->getManager();
$existing_arr = array();
$existing = $em->getRepository('ACMEMyBundle:GalleryMultimedia')->findBy(array('multimedia' => $multimedia));
$gals = array();
foreach($existing as $exist)
{
$existing_arr[] = $exist->getGallery()->getId();
}
foreach($galleryies as $gallery)
{
if(in_array($gallery->getId(),$existing_arr))
{
continue;
}
else
{
$gm = new \ACME\MyBundle\Entity\GalleryMultimedia();
$gm->setGallery($gallery);
$gals[] = $gm;
$multimedia->setGalleries($gals);
}

}
}

有人可以帮助我可怜的灵魂吗?

最佳答案

我通过像这样在 postPersist 中持久化来解决这个问题

public function postPersist($multimedia)
{
$this->postUpdate($multimedia);
}
public function postUpdate($multimedia)
{
$this->saveGalleries($multimedia);
}

希望这对那里的人有帮助

关于symfony - 在奏鸣曲管理员中使用额外字段坚持多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26137533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com