[英]Doctrine 2.0: How to target an entity's superclass in a OneToOne relationship
我不太會問問題,但是下面的代碼應該是不言自明的。 我需要創建一個從類到不是實體的實體的超類的OneToOne關聯。
/* Not an entity */
class Superclass {
/**
*@Id @Column(name="entity_id", type="integer") @GeneratedValue
**/
protected $id;
}
/**
* @Entity @Table(name="subclasses1")
**/
class Subclass1 extends Superclass {
}
/**
* @Entity @Table(name="subclasses2")
**/
class Subclass2 extends Superclass {
}
/**
* @Entity @Table(name="assoc")
**/
class Associationclass
{
/**
*OneToOne(targetEntity="Superclass")
**/
protected $association;
/**
*@Column(type="string")
**/
protected $info;
}
問題是:如何在不使超類成為實體的情況下(創建新表並使用區分符)使用OneToOne關系引用子類1和子類2?
你不能 如果您想要這種繼承(可以在關聯中使用的那種),則需要在學說中對繼承建模。
關聯需要一個“ targetEntity”-就像名稱所示,它必須是一個實體。
除非有很好的理由,否則,繼續使您的超類成為一個實體,並以一種學說可以理解的方式建立繼承。
您的超類需要成為一個實體的原因是因為該超類及其子類將共享一個標識符。 因此,有了標識符(和區分符),該學說便可以確定SuperClass#1234實際上是SubClass2。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.