4

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

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

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

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

我对此有两个问题:

  • 实体文件是存储 getSalary() 函数的好地方吗?
  • 如何做到这一点,以便每当调用员工实体时,薪水变量将填充基于年龄和经验计算的薪水?
4

1 回答 1

6

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

是的。

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

此外,实体可以包含简单的 getter 和 setter 以外的方法。IMO只要这些方法对实体字段进行操作,它们就属于实体。

如何做到这一点,以便每当调用员工实体时,薪水变量将填充基于年龄和经验计算的薪水?

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

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

于 2013-06-01T19:38:38.890 回答