2011-11-10 22 views
1

に基づいて参照を取得します。誕生日を持つエンティティPersonがあります。私は別のエンティティAgegroupを持っています。このエンティティには年齢に基づいてグループの名前といくつかの情報が格納されています。Symfony2 Doctrine Symfony2/Doctrine2プロジェクトの属性

例:
Person名:XY日:1980年5月6日
Agegroup::1〜10:
Agegroup:から:11:を20
Agegroup:から:21に30

エンティティ内から(現在の日付に基づいて)、現在所属する年齢グループを取得したいと考えています。

すなわち:$ person-> getCurrentAgeGroup()

したがって、私は明らかに行うには良いことではありませんエンティティ、内から別のリポジトリクラスにアクセスする必要があります。

この種の機能を実装する方法はありますか?

私はUsing EntityManager inside Doctrine 2.0 entities を読んでいますが、この問題の解決策となります。残念ながら、私はこれを実装するための解決策を見出しませんでした。何とかエンティティにサービスを注入する必要がありますか?

この種の問題には他にもベストプラクティスがありますか?

答えて

2

エンティティマネージャにエンティティマネージャを置くのは良いスタイルではありません。より良いアプローチは、カスタムメソッドを持つAgegroupRepositoryを作成することですgetAgegroup(Person $person)

別のアプローチは、年齢グループに(getterとsetterを持つ)Personの財産を作るカスタムPersonRepositoryを作成してインスタンス化するfind()方法を修正することです人を探すときの正しいインスタンスAgegroup

エンティティオブジェクトにはデータおよびビジネスルールのみを格納し、情報の格納には関与しないようにしてください。これはリポジトリのためのものです。

+0

ありがとう、それは私を助けました! – cevou

関連する問題