我想要做的是从映射的超类扩展单个表继承类,但是当我尝试更新方案时,我会发现以下错误:
[学说\ DBAL \架构\ SchemaException]
名为'uniq_efe84ad134ecb4e6'的索引已在表'article_article'上定义。
我的层次结构:
Content(mappedSuperClass)< - Article(SingleTableInheritance)< - MyArticle
类:
abstract class Content
{
protected $id;
public function getId()
{
return $this->id;
}
}
class Article extends Content
{
}
class MyArticle extends Article
{
}
映射:
Content:
type: mappedSuperclass
id:
id:
type: integer
id: true
generator:
strategy: AUTO
Article:
type: entity
table: article_article
inheritanceType: SINGLE_TABLE
discriminatorColumn:
name: discr
type: string
discriminatorMap:
article: Article
my_article: MyArticle
MyArticle:
type: entity
这里有什么问题?
答案 0 :(得分:0)
错误在mappedSuperclass上。 Content类有一个 oneToOne 关系,这不在上面的例子中,因为我试图让它更抽象。
Content:
# ...
oneToOne:
route:
targetEntity: Route
似乎doctrine尝试再次为扩展类添加唯一键。我不知道这是对mappedSuperclass的限制还是只是一个bug,但我通过将oneToOne关系改为manyToOne 来解决它,因为它几乎相同,但是没有独特的约束。
Content:
# ...
manyToOne:
route:
targetEntity: Route