【发布时间】:2016-09-26 23:44:46
【问题描述】:
我上了三门课:
- 项目类型
- 阶段
- ProjectTypePhase(这是为了创建一个单独的连接表,以确保 ProjectType 和 Phase 与订购的 id 链接)
项目类型
/**
* @OneToMany(targetEntity="ProjectTypePhase", mappedBy="project_type")
*/
private $projectTypePhases;
public function __construct()
{
$this->projectTypePhases = new ArrayCollection();
}
/**
* @return mixed
*/
public function getProjectTypePhases()
{
return $this->projectTypePhases;
}
阶段
/**
* @OneToMany(targetEntity="ProjectTypePhase", mappedBy="phase")
*/
private $projectTypePhases;
public function __construct()
{
$this->projectTypePhases = new ArrayCollection();
}
/**
* @return mixed
*/
public function getProjectTypePhases()
{
return $this->projectTypePhases;
}
ProjectTypePhase
/**
* @ManyToOne(targetEntity="ProjectType", inversedBy="project_type_phase")
* @JoinColumn(name="project_type_id", referencedColumnName="id")
*/
private $projectType;
/**
* @ManyToOne(targetEntity="Phase", inversedBy="project_type_phase")
* @JoinColumn(name="phase_id", referencedColumnName="id")
*/
private $phase;
public function __construct($projectType, $phase)
{
$this->projectType = $projectType;
$this->phase = $phase;
}
我通过 MySQL 工作台填充了数据库,因为它们只是 id 条目(对吗?)。无论如何,每当我尝试执行 $projectType->getProjectTypePhases();` 时,它都会返回一个空集合。当我尝试这个时:
$repository = $this->getDoctrine()->getRepository('AppBundle:ProjectTypePhase');
$projectPhases = $repository->findAll();
我得到了所有条目,但不知何故,项目类型和阶段实体实例的变量名称为空,即使它们已填充到数据库中。对应的键名是正确的,名字是填的。出了什么问题?是否有一些方法需要完成我所缺少的?我想要完成的事情是:
我有一个多对多关系,它在 ProjectType 和 Phase 之间运行良好。但是,由于该表没有 id,因此事情并没有按照我想要的顺序进行。我已经搜索了一个解决方案,这是一个单独的实体,可以处理 ProjectType 和 Phase 之间的关系并添加额外的列。这是正确的方法吗?
【问题讨论】:
-
您在
ProjectTypePhaseinversedBy中有错字还是正确? -
应该是正确的:@ORM\Table(name="project_type_phase")
标签: database symfony doctrine one-to-many