在我的Symfony2 / Doctrine2项目中,我有一个实体Person
,它有一个出生日期。我有另一个实体Agegroup
,它根据年龄来存储一个名称和一些组的更多信息。
例:
Person
姓名:xy日期:1980-05-06
Agegroup
:从:1到:10
Agegroup
:从:11到:20
Agegroup
:从:21到:30
我想从实体内部(根据当前日期)获取一个人当前所属的Agegroup。
即。 :$人 - > getCurrentAgeGroup()
因此,我必须从实体中访问另一个存储库类,这显然不是一件好事。
有没有办法实现这种功能?
我看了Using EntityManager inside Doctrine 2.0 entities 这可能是解决问题的方法。不幸的是,我没有找到实现这个的解决方案。我是否必须以某种方式将服务注入实体?
也许还有其他针对此类问题的最佳做法?
答案 0 :(得分:2)
将实体管理器放入您的实体并不是一种好方法。更好的方法是创建一个具有方法AgegroupRepository
getAgegroup(Person $person)
另一种方法是使年龄组成为Person
的属性(使用getter和setter),创建自定义PersonRepository
并修改find()
方法以实例化正确的实例Agegroup
寻找一个人时。{/ p>
您的实体对象应该只存储数据和业务规则,而不应该关注信息的存储。这就是存储库的用途。