我是使用 Symfony 的新手,我对结构有点困惑。我使用 queryBuilder 进行了自定义查询,但我真的不知道将这段代码放在哪里。它在控制器内部工作,但我不喜欢在那里与 db 进行交互。所以我想把它放在一个实体存储库中,但它真的很有限,我无法将它用于我的案例。此查询通过连接发出请求并按多列过滤。
那么我可以把这段代码放在哪里呢?
编辑1:
$repository = $this->getDoctrine()->getRepository('EgCBGEBundle:portfoliohistory_pfh');
$queryBuilder = $repository->createQueryBuilder('pfh');
$queryBuilder->innerJoin('pfh.portfolio', 'pfo', \Doctrine\ORM\Query\Expr\Join::WITH, 'pfh.id_pfo = pfo.id_pfo');
$queryBuilder->where('pfh.scenario = :scenario')
->andWhere('pfh.measure_catalogue = :measureCatalogue')
->andWhere('pfh.portfolio IN ('.$subs.')')
->andWhere('pfh.date = :date')
->setParameter('scenario', $scenario)
->setParameter('measureCatalogue', $type)
->setParameter('date', $date)
->groupBy('pfh.portfolio, pfh.id') // , pfo.id
//->orderBy('pfo.id', 'ASC')
->setMaxResults(5);
return $queryBuilder->getQuery()->getResult();