主义去除了拥有方面的多对多关系

时间:2017-07-20 14:15:37

标签: php symfony doctrine many-to-many relation

我在Symfony 3中的2个实体之间存在这种关系:

class Project
{
    /**
    * @var int
    *
    * @ORM\Id
    * @ORM\Column(name="id", type="integer")
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    private $id;

    /**
    * @var ArrayCollection
    *
    * @ORM\ManyToMany(targetEntity="Neighborhood", inversedBy="projects")
    * @ORM\JoinTable(name="neighborhood_project")
    */
    private $neighborhoods;

    public function __construct() {
        $this->neighborhoods = new ArrayCollection;
    }

    public function getNeighborhoods()
    {...}

    public function setNeighborhoods(array $entities)
    {...}

    public function addNeighborhood(Neighborhood $entity)
    {...}

    public function removeNeighborhood(Neighborhood $entity)
    {...}
}

class Neighborhood
{
    /**
     * @var int
     *
     * @ORM\Id
     * @ORM\Column(name="id", type="integer", nullable=false, unique=true)
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    public $id;

    /**
     * @var ArrayCollection
     *
     * @ORM\ManyToMany(targetEntity="Project", mappedBy="neighborhoods")
     */
    private $projects;

    public function __construct() {
        $this->projects = new ArrayCollection;
    }

    public function getProjects()
    {...}

    public function setProjects(array $entities)
    {...}

    public function addProject(Project $entity)
    {...}

    public function removeProject(Project $entity)
    {...}
}

这很好用。但我遇到的问题是消除关系。

$ em->删除($邻居); 删除表格“邻居”中的邻居以及表格 neighborhood_project中的所有关系”。

$ em->删除($ project); 删除表'项目'中的项目,不会删除关系在表' neighborhood_project '中。

我已经尝试了许多选项来删除拥有方的关系,但没有找到任何解决方案。 如何删除删除拥有方的关系?

添加了:

级联:

@ORM\ManyToMany(targetEntity="Neighborhood", inversedBy="projects", cascade={"remove"}) 

无济于事。这将删除实体,关系和相关实体。 我需要相同的功能,例如 $ em-> remove($ neighborhood);

1 个答案:

答案 0 :(得分:0)

我有,我的错。 我应该只更新数据库中的模式(doctrine:schema:update)。