错误查询:
$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()
;
表格({{1}与product
相关的specifications
):
ManyToMany
预期结果:
ID为1和2的产品。
需要什么:
需要通过所有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
个条目来获得产品。
因此,举例来说,我需要获得规格为specification_id
和1
的产品2
和1
,因为这两个产品都具有此规格。
2
运算符无济于事,因为按规范1、2和3的选择结果必须为空,因为我们没有具有所有三种规范关系的产品。
P.S。我了解为什么它不起作用,但不知道如何去做。而且找不到像stackoverflow这样的东西。
谢谢!
答案 0 :(得分:0)
解决方案:
CellRangeAddressList addressList = new CellRangeAddressList(2,dataLength , 7, 7);
XSSFDataValidationConstraint dvConstraint = (XSSFDataValidationConstraint) dVHelper
.createFormulaListConstraint("=IF(K3=\"1\",\"2\")");
XSSFDataValidation validation = (XSSFDataValidation) dVHelper
.createValidation(dvConstraint, addressList);
validation.setShowErrorBox(true);
sheet.addValidationData(validation);
对于每个$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
表。