2015-09-19 126 views
0

試圖利用繼承,我創建了以下實體:實體繼承不包括OneToOne-關係

/** 
* @ORM\Table(name="persons") 
* @ORM\Entity() 
*/ 
class Person 
{ 
    /** 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="name", type="string", length=255) 
    */ 
    protected $name; 

    /** 
    * @ORM\OneToOne(targetEntity="Image", cascade={"persist"}) 
    * @ORM\JoinColumn(name="image_id", referencedColumnName="id") 
    */ 
    protected $image; 
} 

/** 
* @ORM\Table(name="actors") 
* @ORM\Entity() 
*/ 
class Actor extends Person 
{ 
    /** 
    * @ORM\Column(name="character", type="string", length=255) 
    */ 
    private $character; 
} 


/** 
* @ORM\Table(name="images") 
* @ORM\Entity() 
*/ 
class Image 
{ 
    /** 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @ORM\Column(name="path", type="string", length=255) 
    */ 
    private $path; 
} 

幾乎完美的作品。生成的actors -table包含所有persons-字段,但image-關係除外。我試圖改變關係到ManyToOne,這沒有幫助。

如何使Actor -entity也繼承所有連接的字段?如果上述情況不理想,我願意接受其他解決方案。

+0

您可以嘗試查看**表繼承**,這是學說支持的東西。看看[類表繼承](http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html#class-table-inheritance) – Artamiel

回答

0

你需要一個父結構在演員類:

public function __construct() 
    { 
     parent::__construct(); 
     // your own logic 
    } 

這是建議你添加一個ID以及。

+0

調用父構造函數可悲沒有幫助。也沒有在'Actor'類中明確聲明一個id .. – Zar