如何使用继承映射来注释Doctrine字段?

时间:2014-07-10 13:16:37

标签: inheritance orm doctrine-orm mapping

我有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'

1 个答案:

答案 0 :(得分:0)

也许您已经在YAML文件中进行了映射。所以它找到了两个映射,一个来自YAML,另一个来自Annotations。尝试删除Resources / config / doctrine /.

下的Person.yml文件

希望这有帮助。

干杯!