假设有一个名为Staff的实体。
它有许多持久属性,例如: - 名称 - 经验 - 年龄
我想创建一个基于体验和年龄的“虚拟”属性,称为“薪水”。例如:$ salary =($ experience + $ age)* 100
但我不想坚持Salary属性。原因是我希望只要年龄或经验值发生变化,就会自动更新Salary属性。
我有两个问题:
答案 0 :(得分:6)
Entity文件是存储getSalary()函数的好地方吗?
是的,是的。
并非实体中的每个字段都必须映射到数据库字段。
此外,实体可以包含除简单getter和setter之外的方法。 IMO只要这些方法在实体字段上运行,它们就属于实体。
我怎样才能这样做,以便每当调用一个Staff实体时,工资变量将填入根据年龄和年龄计算的工资。经验?
您可以使用Doctrine的lifecycle events之一,例如postLoad事件,该事件在实体加载到实体管理器后调用。
请注意,您不必将计算结果存储在属性中。你的计算很简单,定义一个getter可能更好。