当我使用类表继承时,Doctrine 2会重复子类中的父类属性。
示例:
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="Entity\MyParentRepository")
* @ORM\Table(name="my_parent")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({"my_child" = "MyChild"})
*/
class MyParent
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=100)
*/
protected $code;
}
/**
* @ORM\Entity(repositoryClass="Entity\MyChildRepository")
* @ORM\Table(name="my_child")
*/
class MyChild extends MyParent
{
/**
* @ORM\Column(type="string", length=100)
*/
protected $name;
}
当我调用doctrine:generate:entities时,MyChild类更改为:
/**
* @ORM\Entity(repositoryClass="Rail\RussiaBundle\Entity\MyChildRepository")
* @ORM\Table(name="my_child")
*/
class MyChild extends MyParent
{
/**
* @ORM\Column(type="string", length=100)
*/
protected $name;
/**
* @var integer
*/
private $id;
/**
* @var string
*/
private $code;
}
(我省略了生成的方法)
因此,如您所见,属性$ id和$ code被复制到MyChild类。
我做错了什么? 类表继承的正确语法是什么?
我使用Doctrine 2.3.4
答案 0 :(得分:1)
如果您将受保护的字段更改为私有,则会有所帮助。
答案 1 :(得分:0)
没关系。你可以删除重复的东西,当然如果你不想修改它。