私はSymfony2/Doctrine2を使用しています。findByマジックメソッドでJoinステートメントを自動的に追加します
私はBaseEntityRepositoryクラスをオーバーライドしようとしているので、magic findByメソッドは自動的にJOINを "translations"リレーションに追加します。 Doctrine_Queryオブジェクトを操作していたので、Symfony 1.4/Doctrine 1で簡単にできたので、$ query-> addJoin()を実行するだけでした。
残念ながら、Doctrine 2では、パラメータとして条件の配列しか受け取られません。それが私が突っ込んできた場所です。
私は、翻訳エンティティと1対多の関係を持つ多くのエンティティを持っています。 exempleについては
:SectionRepository->のfindAll()を使用した場合SectionTranslation
と1対多の関係などのセクションの目標は、(アクティブがSectionTranslationである)だけ「アクティブ」のセクションを取得することです。 (またはfindBy)。
必要なDQL結果は次のとおりです。Select * fromセクションINNER JOIN SectionTranslation ON Section.id = SectionTranslation.translatable_id WHERE SectionTranslation.locale = $ locale AND SectionTranslation.active = 1;