在findBy魔术方法中自动添加Join语句

时间:2011-12-16 20:08:10

标签: symfony doctrine-orm

我正在使用Symfony2 / Doctrine2。

我正在尝试覆盖BaseEntityRepository类,因此神奇的findBy方法会自动在“翻译”关系上添加JOIN。在Symfony 1.4 / Doctrine 1中很容易做到,因为它操纵了一个Doctrine_Query对象,所以我只需要$ query-> addJoin()就行了。

不幸的是,在Doctrine 2中,你只收到一系列标准作为参数,这就是我被困的地方。

我有很多与翻译实体有一对多关系的实体。

例如:Section作为与SectionTranslation的一对多关系

目标是在使用SectionRepository-> findAll()时仅检索“活动”部分(活动在SectionTranslation中)。 (甚至找到)。

想要的DQL结果是:从Section INNER JOIN中选择* SectionTranslation ON Section.id = SectionTranslation.translatable_id WHERE SectionTranslation.locale = $ locale AND SectionTranslation.active = 1;

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

解决方案可能是为特定实体和特定方法添加事件侦听器。