如何处理计算的实体属性

H. *_*hof 4 entity doctrine symfony

假设有一个名为Staff的实体.

它具有许多持久性属性,例如: - 名称 - 经验 - 年龄

我想创建一个"虚拟"属性,它基于经验和年龄,称为"薪水".例如:$ salary =($ experience + $ age)*100

但我不想坚持Salary属性.原因是我希望只要年龄或经验值发生变化,就会自动更新Salary属性.

我有两个问题:

  • Entity文件是存储getSalary()函数的好地方吗?
  • 我怎样才能这样做,以便每当调用Staff实体时,工资变量将填充根据年龄和经验计算的薪水?

Jak*_*las 6

Entity文件是存储getSalary()函数的好地方吗?

是的.

并非您的实体中的每个字段都必须映射到数据库字段.

此外,实体可以包含除简单getter和setter之外的方法.IMO只要这些方法在实体字段上运行,它们就属于实体.

我怎样才能这样做,以便每当调用Staff实体时,工资变量将填充根据年龄和经验计算的薪水?

您可以使用Doctrine的一个生命周期事件,例如postLoad事件,该事件在实体加载到实体管理器后调用.

请注意,您不必将计算结果存储在属性中.您的计算很简单,定义一个getter可能更好.