2014-04-01 56 views
3

这SINGLE_TABLE inheritade是我想拥有的配置:学说传承 - 从连接表

一个实体“账户”具有JOINED继承到其他两个实体:“作者”和“AccountBackend”。

然后,我希望“AccountBackend”具有SINGLE_TABLE继承与其他两个实体:“管理员”和“FeaturedAuthor”。这是我让他们定义方式:

Account.php

/** 
* @Entity (repositoryClass="Repositories\Account") 
* @Table(name="accounts") 
* @InheritanceType("JOINED") 
* @DiscriminatorColumn(name="discr", type="integer") 
* @DiscriminatorMap({"1"="Author","2"="AccountBackend"}) 
* @HasLifecycleCallbacks 
*/ 
class Account 
{ 

Curator.php

/** 
* @Entity 
* @Table(name="accounts_author") 
*/ 
class Author extends Account 
{ 

AccountBackend.php

/** 
* @Entity (repositoryClass="Repositories\AccountBackend") 
* @Table(name="accounts_backend") 
* @InheritanceType("SINGLE_TABLE") 
* @DiscriminatorColumn(name="discr", type="integer") 
* @DiscriminatorMap({"1"="FeaturedAuthor","2"="Administrator"}) 
* @HasLifecycleCallbacks 
*/ 
class AccountBackend extends Account 
{ 

FeaturedAuthor.php

/** 
* @Entity 
*/ 
class FeaturedAuthor extends AccountBackend 
{ 

Administrator.php

/** 
* @Entity 
*/ 
class Administrator extends AccountBackend 
{ 

当我把它们定义,当我尝试通过CLI做一个更新,它说

“实体‘实体\ AccountBackend’必须的一部分鉴别器 'Entities \ Account'的映射将被正确映射到继承 层次中。或者,也可以让“实体\ AccountBackend”的 抽象类,以避免发生的历史此异常。”

我看不出有什么毛病我定义他们的方式,这是我第一次尝试有继承上已经继承实体。的什么错?谢谢!

回答

7

你在你的@DiscriminatorMap需要为你的“AccountBackend”级的情况下,任何想法

@DiscriminatorMap({"1"="FeaturedAuthor","2"="Administrator", "3"="AccountBackend"}) 

Documentation

应在@DiscriminatorMap被指定的所有实体类,是映射的实体层次结构的一部分(包括最顶层类)解释。在包含Person类的情况下。

+0

您好。我在我的Account.php实体 – raygo

+0

有,但您的帐户实体不是SINGLE_TABLE继承的一部分。您需要将AccountBackend添加到您的SINGLE_TABLE的DiscriminatorMap – Peekmo

4

如果你来到这里&曾与SINGLE_TABLE继承问题 - 所发生的问题,因为你的鉴别类不是抽象的可能。

我的情况下的例子(溶液)

/** 
* @ORM\InheritanceType("SINGLE_TABLE") 
* @ORM\DiscriminatorColumn(name="entity", type="string") 
* @ORM\DiscriminatorMap({"product" = "ProductReview", "seller" = "SellerReview"}) 
* @ORM\Table(name="reviews") 
*/ 
abstract class Review {} 

class ProductReview extends Review {} 

class SellerReview extends Review {}