提问者:小点点

如何处理计算的实体属性


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

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

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

但是我不想保留Salary属性。原因是我想让Salary属性在年龄或经验值更改时自动更新。

关于这一点,我有两个问题:

  • 实体文件是存储getSalary()函数的好地方吗?
  • 我如何才能做到,每当一个工作人员实体被调用时,工资变量将被填充为基于年龄计算的工资

共1个答案

匿名用户

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

是的,它是。

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

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

我如何使它能够在调用员工实体时,使用基于年龄计算的薪资填充薪资变量

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

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