Php 原则消除拥有方多对多关系
我在Symfony 3中的两个实体之间存在这种关系:Php 原则消除拥有方多对多关系,php,symfony,doctrine,many-to-many,relation,Php,Symfony,Doctrine,Many To Many,Relation,我在Symfony 3中的两个实体之间存在这种关系: class Project { /** * @var int * * @ORM\Id * @ORM\Column(name="id", type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var ArrayCollection * * @ORM
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->remove($neighbour)删除表“邻域”中的邻域以及表“邻域项目”中的所有关系
$em->remove($project)删除表“项目”中的项目,不会删除表“邻域项目”中的关系
我尝试了许多选项来删除拥有方的关系,但没有找到任何解决方案。
如何在删除拥有方时删除关系
增加:
级联:
@ORM\ManyToMany(targetEntity="Neighborhood", inversedBy="projects", cascade={"remove"})
没用。这将删除实体、关系和相关实体。
我需要像$em->remove($neighborhood)一样的功能我有,是我的错。
我应该只更新数据库中的模式(条令:模式:更新)。您尝试过onDelete=“CASCADE”吗?尊敬的,我已经试过了