2015-09-19 50 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