doctrine2合并对象与关系

时间:2015-10-13 11:00:12

标签: doctrine-orm

我有一个与自身有OneToMany关系的实体(注意它使用单表继承)。

/**
 * @ORM\Table()
 * @ORM\Entity()
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="discr", type="string", length=30)
 **/
abstract class PlatformPost
{
    // [...]

    /**
     * @var PlatformPost
     *
     * @ORM\ManyToOne(targetEntity="PlatformPost", inversedBy="comments")
     */
    private $parent;

    /**
     * @var PlatformPost[]|Collection
     *
     * @ORM\OneToMany(targetEntity="PlatformPost", mappedBy="parent", orphanRemoval=true, cascade={"ALL"})
     * @Assert\Valid()
     */
    private $comments;

    // [...]
}

我从api创建这个实体然后坚持它。如果它已经存在,我使用$em->merge($post)进行更新。

这只是一种作品。我从该方法获得的实体与我想要的完全相同,但是doctrine不会更新注释的外键。如果我再次查询帖子,则注释数组仍包含应删除的旧实体。

快速解决方案是在合并之前删除所有评论,但我想要一个更好的解决方案。

0 个答案:

没有答案