---- 使用 Symfony2.3.1 和 Doctrine2 完成 ----
抱歉,我希望我不会太笨,无法为我的问题找到合适的解决方案。我尝试建立一个查询几个小时。
SELECT * FROM product
WHERE product_id in
(
SELECT product_id from (
SELECT count(*) as result_amount, product_id FROM product_x_attribut
JOIN productattribut on productattribut_id = productattribut.id
WHERE (
productkey = "price" and
stringType = "premium"
) or (
productkey = "size" and
stringType = "S"
)
GROUP BY product_id
HAVING result_amount = 2
) as temp
)
GROUP BY product_id
ORDER BY p0_.name ASC
这是在 phpmyAdmin 中运行良好的 SQL。
这可以看作
Select * from abc where abc.x in ( Select * from ( select * from ) as abcd )
所以有一个核心查询,我称之为 subSubQuery,围绕核心的第二个查询将被称为 subQuery,而外部查询只是外部查询,没有子查询。我可以用 Doctrine2 构建 subSubQuery。
但我不能像这样构建子查询
Select product_id from ( $subSubQuery->getQuery()->getDQL() )
我想做这样的子查询
$subQuery = $repositoryProduct->createQueryBuilder('product');
$subQuery->add('select', 'product_id');
$subQuery->add('from',$subSubQuery->getDQL() );
// However to set an alias is a miracle for me, this didnt work off course
$subQuery->add('as','tmp' );
这是子查询。我也无法构建外部查询
Select * from abc where abc.x in ( $subQuery->getQuery()->getDQL() )
我想这样做
$query->where(
$query->expr()->in('product.id', $subQuery->getDQL() )
);
但我尝试使用 Doctrine2 来构建它,如下所示:
我很沮丧,我尝试了->getSQL(),->getDQL(),我尝试了尽可能多的方法来解决这个问题,并且我在谷歌中尝试了尽可能多的关键字我的手指能够写字...我希望有人可以帮助我找到解决方案...
非常感谢每一个有用的建议。