0

複数のビットマスク列を持つエンティティを持つプロジェクトに取り組んでいます。たとえば、私の User エンティティには column がありますspecialitiesBitmask。このビットマスクは、Specialty などの別のテーブルに関連付けられます。私がやりたいと思ったら$user->getSpecialties()、これを行うための最良の方法は何ですか? Specialty テーブルにクエリを実行し、それに応じてビットマスクを分解する必要があります。ただし、Doctrine2 では EntityManager にアクセスできません。

解決策を探しましたが、あまり見つかりませんでした。これを見ると、リスナーを使用して postLoad イベントをフックし、その方法で EM を取得できますが、これはかなりハックでクリーンではありません。

私が考えることができる他の唯一の解決策は、他のサービスを作成して何かを行うことです$userService->getSpecialtiesForUser($user);が、ビットマスクされた列がいくつかあるため、それほどクリーン/効率的ではありません。

最善の方法は何だと思いますか?

4

1 に答える 1

1

を作成しSpecialtyRepository、実装しgetByUser($user)ます。その方法については、こちらこちらをご覧ください。

次に、ユーザーの専門分野を取得するには、次のようにします。

$specialties = $em->getRepository('Specialty')->getByUser($user);

于 2012-09-10T18:12:44.253 に答える