2 回答
TA贡献1860条经验 获得超9个赞
让我们阅读有关此的 Doctrine 文档:https ://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/inheritance-mapping.html#inheritance-mapping
映射的超类是一个抽象或具体的类,它为其子类提供持久的实体状态和映射信息,但它本身不是实体。通常,这种映射超类的目的是定义多个实体类共有的状态和映射信息。
...
映射的超类不能是实体,它不是可查询的,并且由映射的超类定义的持久关系必须是单向的(仅具有拥有方)。这意味着在映射的超类上根本不可能进行一对多关联。
根据这个:
MappedSuperclass 不能是实体
不能有一对多关系 - 所以如果你将 ManyToOne 定义为同一个类,那么它也会在同一个类上创建 OneToMany - 正如你在上面所读到的,这是被禁止的。
TA贡献1821条经验 获得超4个赞
出于某种原因,仅更改 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 关注
- 110 浏览
添加回答
举报