【发布时间】:2014-07-10 13:16:37
【问题描述】:
我有 2 个实体。
/**
* Person
*
* @ORM\Table(name="person")
* @ORM\Entity
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="role", type="string")
* @ORM\DiscriminatorMap({"official" = "OfficialPerson"})
*
*/
class Person
{
/**
* @var string
*
* @ORM\Column(name="role")
*/
private $role = 'user';
public function setRole($role)
{
$this->role = $role;
return $this;
}
public function getRole()
{
return $this->role;
}
}
和
/**
* @ORM\Entity
*/
class OfficialPerson extends Person
{
}
我需要为此字段设置 getter 和 setter,但它是实体 'Person' 上列 'role' 的重复定义。如何解决这个问题并保存 getter 和 setter?
我写的时候
* @ORM\DiscriminatorColumn(name="role", type="string")
和
* @ORM\Column(name="role")
在 Person 实体中,我得到一个错误
Duplicate definition of column 'role' on entity 'Person'
【问题讨论】:
-
你想从OfficialPerson类中调用Person的
setRole和getRole吗? -
@AnjanaSilva 需要将字段中的属性“角色”映射到数据库中,并可以从对象访问它
-
@fr051k 实际上已经映射了 Person 类中的
setRole和getRole方法。您可以通过在 OfficialPerson 类中声明两个新函数来扩展这两个函数。是这个意思吗? -
@AnjanaSilva 当我写 * @ORM\DiscriminatorColumn(name="role", type="string") 和 * @ORM\Column(name="role") 我得到一个错误重复定义实体“人”上的“角色”列
-
显然这是 Doctrine 的预期行为,解决它的唯一方法是创建自己的单独列,或使用
INSTANCEOF进行查询或在代码中使用get_class。见doctrine-project.org/jira/browse/DDC-911
标签: inheritance orm doctrine-orm mapping