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



我们的想法是,每当创建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;
}
不要使用静态属性,Doctrine无法正确处理它们。

有了一个共同的属性,一切都会按预期进行。

/**
* @ORMColumn(type="boolean")
*/
protected $isManager = true;

相关内容

  • 没有找到相关文章

最新更新