したがって、2 つのエンティティ A と B の間に多対 1 対 1 対多の関係があります。1 つの特定の A と一致するすべてのエンティティ B を取得するには、C が A と B の間のリンクを作成するクラスです。
$bs = $this->getDoctrine()
->getEntityManager()
->getRepository('MyBundle:C')
->findByContact($a->getId());
したがって、この部分はおそらく機能していますが、実行すると次のエラーが発生します。
クラス My\Bundle\Entity\My\Bundle\Entity\D が存在しません
したがって、D は B と 1 対多の関係にあるクラスです。リポジトリが B のリストを取得したときに呼び出されるのは当然です。
しかし、なぜエンティティのパスを複製するのでしょうか?
注 : クラス D の呼び出しを検索しましたが、コード内でパスが重複することはありません。
編集 :
問題の原因となっているパスを確認するためにしばらく時間を費やした後、最終的に Doctrine アノテーション パス間の非常に小さな (しかし重要な) 違いに遭遇しました。
マイ\バンドル\エンティティ\D
および、特に getter と setter で、php 自体のクラスに対して呼び出されるパス:
\My\Bundle\Entity\D
このバックスラッシュは長い間私を悩ませてきましたが、今ではすべてが再び機能します。問題が解決しました。