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でも全く同じ指定を再度する必要がある
しないと、Too few parameters: the query defines 1 parameters but you only bound 0というerrorになる
#WIP
どこからcreateQueryBuilder()するのかよくわからん
#??
createQueryBuilder() ?
createSubquery() ?
https://blog.asial.co.jp/501
EntityRepository ?
EntityManager ?
https://stackoverflow.com/questions/52869189/order-by-innerjoin-table-with-doctrine