Переопределить значение свойства по умолчанию в Doctrine2 Mapped Superclass - PullRequest
0 голосов
/ 12 марта 2020

Идея состоит в том, что расширение моего класса Employee и установка моего свойства isManager сохранит его как истинное в базе данных при создании сущности DepartmentHead. Это не работает Кто-нибудь знает, почему сущности DepartmentHead хранятся с isManager, равным false?

/**
 * @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;
}

1 Ответ

0 голосов
/ 12 марта 2020

Не используйте свойства stati c, Doctrine не может правильно с ними справиться.

С общим свойством все работает как положено.

/**
 * @ORM\Column(type="boolean")
 */
protected $isManager = true;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...