Doctrineのsubquery
where..inのinの部分でsubqueryを使った場合はうまくいったmrsekut.icon
参考にしたのはこの解答だが、これはDoctrine v1なので、v2 でこのまま書いてもerrorになる場合がある 後述するが、setParameter()を再度指定する必要がある
これで動いた
code:php
// sub query
$sub = $this->createQueryBuilder('ap')
->select('pc.product_id')
-> ...
->setParameter('categoryId', $categoryId);
$expr = $this->createQueryBuilder('expr');
// main query
$result = $this->createQueryBuilder('ap1') // 上の名前(ap)の別の名前を指定する
-> ...
->where($expr->expr()->in('p.id', $sub->getDQL()))
->setParameter('categoryId', $categoryId); // もう一度指定する
subquery内でsetParameter()を使っている場合は、main queryでも全く同じ指定を再度する必要がある
どこからcreateQueryBuilder()するのかよくわからん
createQueryBuilder() ?
createSubquery() ?
EntityRepository ?
EntityManager ?