Symfony 查询构建器 select 由多个连接的 ids (ManyToMany)

Symfony query builder select by multiple joined ids (ManyToMany)

查询错误:

$qb = $this->createQueryBuilder('product')
    ->join('product.specifications', 'specification')
    ->andWhere("specification.id = :specificationId_1") // this
    ->andWhere("specification.id = :specificationId_2") // and this
    ->setParameter("specificationId_1", 1)
    ->setParameter("specificationId_2", 2)
    ->getQuery()
    ->getResult()
;

表(productManyToMany 相关的 specifications):

product:
  id  name
  1   Product1
  2   Product2
  3   Product3

specifcation:
  id   name
  1    Specification1
  2    Specification2
  3    Specification3

product_specification:
  product_id   specification_id
  1            1
  1            2
  1            3
  2            1
  2            2
  3            3

预期结果:
ID 为 1 和 2 的产品。


需要什么:
需要通过所有 specification_id 个条目获取产品。


因此,例如,我需要通过规格 12 获取产品 12,因为这两种产品都有此规格。


IN 运算符没有帮助,因为 select 规格 1、2 和 3 的结果必须为空,因为我们没有具有所有三个规格关系的产品。


P.S。我明白为什么它不起作用,但不明白该怎么做。并且无法在 Whosebug 中找到类似的东西。

谢谢!

解决方案:

$qb = $this->createQueryBuilder("product")
    ->join("product.specifications", "specification_1")
    ->join("product.specifications", "specification_2")
    ->andWhere("specification_1.id = :specificationId_1")
    ->andWhere("specification_2.id = :specificationId_2")
    ->setParameter("specificationId_1", 1)
    ->setParameter("specificationId_2", 2)
    ->getQuery()
    ->getResult()
;

对于每个 where 需要 join table 再用新的 alias