Php Symfony/条令-关系众多-确实存在注释,即;如果不再有人连接,请删除该实体";?
我有一个博客,人们可以在文章中使用标签。 我使用的关系是ManyToMany,因为它可以在多篇文章中使用多个hashtag 当我删除一篇文章时,我会删除aricle的所有hashtag。我只是用arrayCollection制作removeHashtag。它工作得很好,但是,如果其他文章不再使用这个标签,我想从数据库中删除这个标签实体 我的文章实体: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
/**
* 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”在多个关系中的效果) 无论如何,如果你能分享你的控制器代码来实现想要的行为,我会很感兴趣 谢谢