複数のビットマスク列を持つエンティティを持つプロジェクトに取り組んでいます。たとえば、私の User エンティティには column がありますspecialitiesBitmask
。このビットマスクは、Specialty などの別のテーブルに関連付けられます。私がやりたいと思ったら$user->getSpecialties()
、これを行うための最良の方法は何ですか? Specialty テーブルにクエリを実行し、それに応じてビットマスクを分解する必要があります。ただし、Doctrine2 では EntityManager にアクセスできません。
解決策を探しましたが、あまり見つかりませんでした。これを見ると、リスナーを使用して postLoad イベントをフックし、その方法で EM を取得できますが、これはかなりハックでクリーンではありません。
私が考えることができる他の唯一の解決策は、他のサービスを作成して何かを行うことです$userService->getSpecialtiesForUser($user);
が、ビットマスクされた列がいくつかあるため、それほどクリーン/効率的ではありません。
最善の方法は何だと思いますか?