2011-11-16 50 views
3

我用了兩個類:主義ClassTableInheritance HOWTO

namespace Test; 
use Doctrine\ORM\Mapping as ORM; 

/** 
*@Table() 
*@InheritanceType("Joined") 
*@DiscriminatorMap({"baseclass"="BaseClass", "subclass"="SubClass"} 
*@Entity 
*/ 
class BaseClass{ 

    /** 
     *@Column(name="id", type="integer") 
     *@Id 
     *@GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 
} 


namespace Test; 
use Doctrine\ORM\Mapping as ORM; 

/** 
*@Table() 
*@Entity 
*/ 
class SubClass extends BaseClass{ 

    /** 
     * @Column(name="v", type="string", nullable="false") 
     */ 
     private $v; 
} 

我不能堅持一個SubClassObject。我收到以下errorMessage:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'dtype' in 'field list' 

我是新來的Doctrine和ORM,所以我需要一些幫助。

編輯:在使用cli orm:create-schema:tool之後,基類有一個dtype字段。是否有可能創建沒有該字段的實體,這個字段代表什麼?

+0

請注意,問題 http://www.doctrine-project.org/jira/si/jira.issueviews:issue-html/DDC-2225/DDC-2225.html – nvvetal

回答

5

dtype字段是默認@DiscriminatorColumn。您可以按如下更改列名:

@InheritanceType("Joined") 
@DiscriminatorColumn(name="[CHANGE]", type="string") 
@DiscriminatorMap({"baseclass"="BaseClass", "subclass"="SubClass"} 

inheritance hierarchy,不可能跳過這一領域。該字段將類型映射到相應的類。在你的例子中:Type子類引用SubClass類。

+0

thx解釋 – Fesp