2011-11-10 48 views
1

獲取參考我有一個實體Person它有一個出生日期。我有另一個實體Agegroup,它存儲一個名稱和基於年齡的年齡組的一些更多的信息。Symfony2 Doctrine在我的Symfony2/Doctrine2項目中根據屬性

實施例:
Person名稱:XY日期:1980年5月6日
Agegroup:國家:1到:10
Agegroup:國家:11至:20
Agegroup:國家:21至:30

我想從實體內(基於當前日期)獲取某個人當前所屬的Agegroup。

即:$人 - > getCurrentAgeGroup()

因此,我將不得不從實體,這顯然不是做一件好事內訪問另一個倉庫類。

有沒有一種方法來實現這種功能?

我讀爲Using EntityManager inside Doctrine 2.0 entities 這可能是解決問題的方法。不幸的是我沒有找到解決方案來實現這一點。我必須以某種方式將服務注入實體嗎?

也許有這種問題的其他最佳做法?

回答

2

將實體管理器放入實體並不是一種好的方式。更好的方法是創建一個自定義AgegroupRepository,有一個方法getAgegroup(Person $person)

另一種方法是使年齡組的Person屬性(有getter和setter),創建一個自定義PersonRepository和修改find()方法實例在尋找一個人時正確的Agegroup實例。

您的實體對象應該只存儲數據和業務規則,不應該關心信息的存儲。這是存儲庫的用途。

+0

謝謝,這幫了我很多! – cevou