Php Symfony/条令-关系众多-确实存在注释,即;如果不再有人连接,请删除该实体";?

Php Symfony/条令-关系众多-确实存在注释,即;如果不再有人连接,请删除该实体";?,php,symfony,orm,doctrine-orm,doctrine,Php,Symfony,Orm,Doctrine Orm,Doctrine,我有一个博客,人们可以在文章中使用标签。 我使用的关系是ManyToMany,因为它可以在多篇文章中使用多个hashtag 当我删除一篇文章时,我会删除aricle的所有hashtag。我只是用arrayCollection制作removeHashtag。它工作得很好,但是,如果其他文章不再使用这个标签,我想从数据库中删除这个标签实体 我的文章实体: /** * Article * * @ORM\Table(name="article") * @ORM\Entity(repository

我有一个博客,人们可以在文章中使用标签。 我使用的关系是ManyToMany,因为它可以在多篇文章中使用多个hashtag

当我删除一篇文章时,我会删除aricle的所有hashtag。我只是用arrayCollection制作removeHashtag。它工作得很好,但是,如果其他文章不再使用这个标签,我想从数据库中删除这个标签实体

我的文章实体:

/**
 * Article
 *
 * @ORM\Table(name="article")
 * @ORM\Entity(repositoryClass="Moodress\Bundle\PosteBundle\Entity\PosteRepository")
 */
class Article
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="Moodress\Bundle\UserBundle\Entity\User")
     * @ORM\JoinColumn(nullable=true)
     */
    private $user;

    /**
     * @var string
     *
     * @ORM\Column(name="description", type="text")
     */
    private $description;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="date_creation", type="datetime")
     */
    private $dateCreation;

    /**
     * @ORM\ManyToMany(targetEntity="Moodress\Bundle\FashtagBundle\Entity\Hashtag", cascade={"persist"})
     */
     private $hashtags;

    /**
     * Constructor
     */
     public function __construct()
     {
       $this->dateCreation = new \Datetime();
       $this->hashtags = new \Doctrine\Common\Collections\ArrayCollection();
     }
   // Getters and setters
 }
我的标签实体:

/**
 * Hashtag
 *
 * @ORM\Table(name="fashtag")
 * @ORM\Entity(repositoryClass="Moodress\Bundle\FashtagBundle\Entity\FashtagRepository")
 */
class Fashtag
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="fashtag_name", type="string", length=255)
     */
    private $hashtagName;

  //Getters and setters
}
如果Hashtag实体没有被其他文章使用,是否可以通过使用条令注释自动删除它? 或者在删除标签后,我是否应该自己检查是否有任何文章使用此标签,然后自己删除实体


谢谢

我遇到了完全相同的问题。关于这个问题我发了帖子

总而言之,我对这个问题的理解是:是的,您必须手动删除所有“过期”的标签记录。没有任何注释可以提供这种效果。。。不幸地(您可以在我的帖子中看到注释cascade={“remove”}、orphanremove=true和ondelete=“cascade”在多个关系中的效果)

无论如何,如果你能分享你的控制器代码来实现想要的行为,我会很感兴趣

谢谢