【问题标题】:Symfony2 Doctrine Get reference based on attributeSymfony2 Doctrine 基于属性获取参考
【发布时间】:2011-11-10 08:18:08
【问题描述】:

在我的 Symfony2/Doctrine2 项目中,我有一个实体 Person,它有一个出生日期。我有另一个实体Agegroup,它根据年龄存储组的名称和更多信息。

示例:
Person 姓名:xy 日期:1980-05-06
Agegroup:从:1 到:10
Agegroup:从:11 到:20
Agegroup:从:21 到:30

我想从实体中获取一个人当前所属的年龄组(基于当前日期)。

即:$person->getCurrentAgeGroup()

因此,我必须从实体内访问另一个存储库类,这显然不是一件好事。

有没有办法实现这种功能?

我读过Using EntityManager inside Doctrine 2.0 entities 这可能是解决问题的方法。不幸的是,我没有找到实现这一点的解决方案。我必须以某种方式将服务注入实体吗?

对于此类问题,也许还有其他最佳做法?

【问题讨论】:

    标签: symfony doctrine doctrine-orm


    【解决方案1】:

    将实体管理器放入您的实体中是不好的风格。更好的方法是创建一个自定义的AgegroupRepository,它有一个方法getAgegroup(Person $person)

    另一种方法是将年龄组设为Person 的属性(带有getter 和setter),创建自定义PersonRepository 并修改find() 方法以在查找时实例化Agegroup 的正确实例一个人。

    您的实体对象应该只存储数据和业务规则,而不应该关心信息的存储。这就是存储库的用途。

    【讨论】:

    • 谢谢,对我帮助很大!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多