symfony2集合类型 - 删除/删除替换集合中的其他元素

时间:2014-06-23 21:46:48

标签: symfony doctrine-orm sonata-admin

我想了解Symfony2中如何处理集合类型。我使用的是Symfony 2.4.6和Sonata Admin 2.2.11。

所以,我有一个Banner实体,它将OneToMany与文件联系起来。当我单独添加或删除文件时,它工作正常,但如果我要在同一个更新中执行此操作,它将变得混乱。

例如:

  1. 当我编辑横幅时,我有3个文件:file1,file2,file3,file4
  2. 删除file3
  3. 添加文件5
  4. 点击更新
  5. 输出将是:file1,file2,file5(file4被file5替换)。

    我无法在集合类型中找到对文件ID的任何引用,那么Symfony应该如何知道要删除哪个集合?

    感谢您的任何解释。

    我的实体看起来像:

    class Banner  
    {  
        /.../  
    
        /**
         * @ORM\OneToMany(targetEntity="BannerFile", cascade={"persist", "remove"}, mappedBy="banner", orphanRemoval=true)
         */
        private $bannerFiles;  
    
    
        /.../  
    
        /**
         * Remove bannerFiles
         *
         * @param BannerFile $bannerFiles
         */
        public function removeBannerFile(BannerFile $bannerFiles)
        {
            $this->bannerFiles->removeElement($bannerFiles);
        }
    }  
    
    class BannerFile
    {
        /.../  
    
        /**
         * @var integer $banner
         *
         * @ORM\ManyToOne(fetch="EXTRA_LAZY", inversedBy="bannerFiles", targetEntity="Banner")
         * @ORM\JoinColumn(name="banner_id", nullable=false, onDelete="CASCADE", referencedColumnName="id")
         */
        private $banner;  
    }
    

0 个答案:

没有答案