2 回答
TA贡献1775条经验 获得超8个赞
让我们阅读有关此内容的教义文档:https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/inheritance-mapping.html#inheritance-mapping
映射超类是一个抽象或具体的类,它为其子类提供持久实体状态和映射信息,但其本身不是实体。通常,此类映射超类的目的是定义多个实体类通用的状态和映射信息。
...
映射的超类不能是实体,它不能是可查询的,并且由映射的超类定义的持久关系必须是单向的(仅具有所属方)。这意味着在映射的超类上根本不可能进行一对多关联。
据此:
映射的超类不能是实体
不能有一对多关系 - 所以如果你将ManyToOne定义为同一类,那么它也会在同一类上创建OneToMany - 正如你上面读到的,这是被禁止的。
TA贡献1856条经验 获得超11个赞
由于某种原因,仅更改BaseTest中的完整实体路径解决了引发异常的应用程序并起作用,如果有人会遇到相同的问题,请尝试更改
/**
* @ORM\ManyToOne(targetEntity="Ziebura\CMSBundle\Entity\Test")
*/
protected $parent;
public function getParent()
{
return $this->parent;
}
public function setParent($parent)
{
$this->parent = $parent;
}
自
/**
* @ORM\ManyToOne(targetEntity="Test")
*/
protected $parent;
public function getParent()
{
return $this->parent;
}
public function setParent($parent)
{
$this->parent = $parent;
}
如果有人知道为什么它必须这样,我非常感谢对我的答案发表评论。
- 2 回答
- 0 关注
- 104 浏览
添加回答
举报