如何处理计算的实体属性

时间:2013-06-01 18:39:01

标签: symfony doctrine entity

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

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

我想创建一个基于体验和年龄的“虚拟”属性,称为“薪水”。例如:$ salary =($ experience + $ age)* 100

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

我有两个问题:

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

1 个答案:

答案 0 :(得分:6)

  

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

是的,是的。

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

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

  

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

您可以使用Doctrine的lifecycle events之一,例如postLoad事件,该事件在实体加载到实体管理器后调用。

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