假设有一个名为Staff的实体。
它有许多持久属性,例如:-姓名-经历-年龄
我想创建一个基于经验和年龄的“虚拟”属性,称为“薪水”。例如:$salary=($experience$age)*100
但是我不想保留Salary属性。原因是我想让Salary属性在年龄或经验值更改时自动更新。
关于这一点,我有两个问题:
实体文件是存储getSalary()函数的好地方吗?
是的,它是。
并非实体中的每个字段都必须映射到数据库字段。
此外,实体可以包含除简单getter和setter之外的方法。IMO只要这些方法在实体字段上运行,它们就属于实体。
我如何使它能够在调用员工实体时,使用基于年龄计算的薪资填充薪资变量
可以使用Doctrine的生命周期事件之一,例如postLoad事件,该事件在将实体加载到实体管理器后调用。
请注意,您不必将计算结果存储在属性中。您的计算很简单,最好定义一个getter。