覆盖Doctrine2映射的超类中的默认属性值

问题描述 投票:0回答:1

这个想法是,无论何时创建DepartmentHead实体,扩展我的Employee类并设置我的isManager属性都会将其存储为true。这不起作用。有谁知道为什么以isManager等于false来存储DepartmentHead实体?

/**
 * @Entity
 * @InheritanceType("JOINED")
 * @DiscriminatorColumn(name="discr", type="string")
 * @DiscriminatorMap({"employee" = "Employee", "dphead" = "DepartmentHead"})
 */
class Employee
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    protected $id;

    /**
     * @ORM\Column(type="boolean")
     */
    protected static $isManager = false;

    /**
     * @return bool
     */
    public static function isManager(): bool
    {
        return static::$isManager;
    }

    /**
     * @param bool $isManager
     */
    public static function setIsManager(bool $isManager): void
    {
        static::$isManager = $isManager;
    }
}

/** 
 * @Entity()
 */
class DepartmentHead extends Employee 
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    protected $id;

    protected static $isManager = true;
}
php doctrine-orm
1个回答
0
投票

不使用静态属性,Doctrine无法正确处理它们。

具有公共属性,一切正常。

/**
 * @ORM\Column(type="boolean")
 */
protected $isManager = true;
© www.soinside.com 2019 - 2024. All rights reserved.