Неверный запрос:
$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()
;
Таблицы (product
относится к specifications
по ManyToMany
):
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
Ожидаемый результат:
Продукты с идентификаторами 1и 2.
Что нужно:
Нужно получить товары по ВСЕМ specification_id
записям.
Так, например, мне нужно получить продукты 1
и 2
по спецификациям 1
и 2
, потому что оба продукта имеют эти спецификации.
IN
оператор не помогает, потому что результат выбора по спецификациям 1, 2 и 3 должен быть пустым, потому что у нас нет продуктов, которые имеют ВСЕ три отношения спецификаций.
PS Я понимаю, почему это не работает, но не понимаю, как это сделать.И не могу найти что-то вроде в stackoverflow.
Спасибо!