我将 Symfony 4.2 与 Doctrine 一起使用,并且我想用两个实体创建具有 ManyToMany 关系的装置:组织项目但是当我加载装置时,连接表(organization_project)总是空的。所以,我不知道我的人际关系是否良好。简历:许多组织有许多项目许多项目有许多组织数据库视图这是我的Organization实体class Organization{ /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; ... /** * @ORM\ManyToMany(targetEntity="App\Entity\Project", mappedBy="organizations") */ private $projects; /** * @return Collection|Project[] */ public function getProjects(): Collection { return $this->projects; } public function addProject(Project $project): self { if (!$this->projects->contains($project)) { $this->projects[] = $project; $project->addOrganization($this); } return $this; } public function removeProject(Project $project): self { if ($this->projects->contains($project)) { $this->projects->removeElement($project); $project->removeOrganization($this); } return $this; }}这是我的Project实体:class Project{ /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; ... /** * @ORM\ManyToMany(targetEntity="App\Entity\Organization", inversedBy="projects") */ private $organizations /** * @return Collection|Organization[] */ public function getOrganizations(): Collection { return $this->organizations; } public function addOrganization(Organization $organization): self { if (!$this->organizations->contains($organization)) { $this->organizations[] = $organization; } return $this; } public function removeOrganization(Organization $organization): self { if ($this->organizations->contains($organization)) { $this->organizations->removeElement($organization); } return $this; }}
1 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
你Organization不是关系的拥有方。它不知道加入表(ManyToOne这将是关于谁持有外键)。此外,您没有指定cascading on persist,因此不会保留非拥有方的关联实体。因此,对于您当前的夹具结构,最佳关联方向是这样的。
class Organization
{
...
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Project", inversedBy="organizations", cascade={"persist"})
* @ORM\JoinTable(name="organization_project") # this one is not necessary
putting here for reference
*/
private $projects;
...
]
class Project
{
...
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Organization", mappedBy="projects", cascade={"persist"})
*/
private $organizations;
...
}
- 1 回答
- 0 关注
- 131 浏览
添加回答
举报
0/150
提交
取消