【发布时间】:2019-10-31 21:35:33
【问题描述】:
我将 Symfony 4.2 与 Doctrine 一起使用,我想创建具有与两个实体的多对多关系的固定装置:
- 组织结构
- 项目
但当我加载固定装置时,连接表 (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;
}
}
这是我的Organization 夹具:
class OrganizationFixtures extends Fixture implements DependentFixtureInterface
{
public const ORGANIZATION_REFERENCE = 'organization-';
public function load(ObjectManager $manager)
{
$organization = new Organization();
$this->addReference(self::ORGANIZATION_REFERENCE.'0', $organization);
$organization->addProject($this->getReference('project-0'));
$manager->persist($organization);
$manager->flush();
}
public function getDependencies()
{
return array(
ProjectFixtures::class
);
}
}
这是我的Project 夹具:
class ProjectFixtures extends Fixture
{
public const PROJECT_REFERENCE = 'project-';
public function load(ObjectManager $manager)
{
$project = new Project();
$this->addReference(self::PROJECT_REFERENCE.'0', $project);
$manager->persist($project);
$manager->flush();
}
}
谢谢你,
【问题讨论】:
-
你的桌子可能是空的吗?你能提供更多信息在哪一点失败?
-
在我的连接表 (organization_project) 中,加载我的固定装置后数据不会出现。此外,我的控制台没有错误。我用数据库屏幕发布我的帖子
-
是的,但是您的 Organization_project 表是空的。也许连接没有找到任何记录?
-
谢谢我解决了我的问题。我的组织实体没有拥有方
标签: php symfony doctrine relationship fixtures