不要使用静态属性,Doctrine无法正确处理它们。
我们的想法是,每当创建DepartmentHead实体时,扩展我的Employee
类并设置我的isManager
属性将在数据库中存储为true。这不起作用。有人知道为什么DepartmentHead实体存储的isManager
等于false吗?
/**
* @Entity
* @InheritanceType("JOINED")
* @DiscriminatorColumn(name="discr", type="string")
* @DiscriminatorMap({"employee" = "Employee", "dphead" = "DepartmentHead"})
*/
class Employee
{
/**
* @ORMId()
* @ORMGeneratedValue()
* @ORMColumn(type="integer")
*/
protected $id;
/**
* @ORMColumn(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
{
/**
* @ORMId()
* @ORMGeneratedValue()
* @ORMColumn(type="integer")
*/
protected $id;
protected static $isManager = true;
}
有了一个共同的属性,一切都会按预期进行。
/**
* @ORMColumn(type="boolean")
*/
protected $isManager = true;