2011-12-16 47 views
0

我正在使用Symfony2/Doctrine2。在findBy魔術方法中自動添加Join語句

我想覆蓋BaseEntityRepository類,所以神奇的findBy方法自動添加一個「翻譯」關係的JOIN。在Symfony 1.4/Doctrine 1中很容易做到,因爲它操縱的是Doctrine_Query對象,所以我只需要$ query-> addJoin()就可以了。

不幸的是,在Doctrine 2中,您只收到一組標準作爲參數,這就是我被卡住的地方。

我收到了許多與翻譯實體有一對多關係的實體。

對於爲例:節與SectionTranslation

目標是僅檢索「活動」的部分(活性是在SectionTranslation)使用時SectionRepository->的findAll()的一對多的關係; (甚至findBy)。

想要的DQL結果是:select * from Section INNER JOIN SectionTranslation ON Section.id = SectionTranslation.translatable_id WHERE SectionTranslation.locale = $ locale AND SectionTranslation.active = 1;

有什麼想法?

回答

0

解決方案可能是爲特定實體和特定方法添加事件偵聽器。