Doctrine orm Doctrine2:通过ManToMany关联进行筛选

Doctrine orm Doctrine2:通过ManToMany关联进行筛选,doctrine-orm,dql,Doctrine Orm,Dql,我想根据对象关联的内容检索对象集合。例如,按类别。这将是一种多对多的关系 我已经能够通过的成员实现这一点,但是我需要传入一个ID数组,而不是一次传入一个ID。我看到有一个“IN()”,但它似乎需要一个子查询,我希望避免这种情况 成员举例: 从实体中选择o\Object1 o其中o.categories的“CATEGORY\u code”成员 (编辑) 这就是我想做的,但也许我误解了实体在DQL中的工作方式: 从实体中选择o\Object1 o其中o.categories.Id位于(Id,Id,I

我想根据对象关联的内容检索对象集合。例如,按类别。这将是一种多对多的关系

我已经能够通过的成员实现这一点,但是我需要传入一个ID数组,而不是一次传入一个ID。我看到有一个“IN()”,但它似乎需要一个子查询,我希望避免这种情况

成员举例:
从实体中选择o\Object1 o其中o.categories的“CATEGORY\u code”成员

(编辑) 这就是我想做的,但也许我误解了实体在DQL中的工作方式:
从实体中选择o\Object1 o其中o.categories.Id位于(Id,Id,Id)


如果这不是您想要的,您必须编辑您的问题,使其更具体。

谢谢。有没有可能在没有连接的情况下完成?(用所需查询更新了我的问题)没有子查询,您在原始问题中说不需要子查询。为什么不需要连接呢?通过我正在构建的API生成DQL语句需要做更多的工作。我需要检测该属性是否实际上是一个连接表,而不是一个属性,并从那里生成连接。此外,我不确定对已经具有该关系映射的对象调用联接会有什么影响。它是否成为一个局部对象?这部电影有表演热播吗?这些问题超出了我原始问题的范围,因此如果需要,我可以重新发布。联接将返回所有相关对象。因此,对于具有三个类别的object1,您将得到四个对象(object1加上三个类别)。对我来说,概念化“检测属性是否实际上是一个连接表”有些困难,如果您连接的属性不是一个表,那么它将失败。但是,如果必须采用这种方法,则该数据在类元数据中很容易获得。至于性能,我没有任何数据。
 SELECT o FROM Entity\Object1 o JOIN o.categories c WHERE c.id in ('id', 'id', 'id');