2011-12-16 21 views
0

私は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;

答えて

0

解決策は、特定のエンティティおよび特定のメソッドに対してイベントリスナーを追加することです。

関連する問題