如何在学说中基于Criteria
进行查询?
我设置了以下准则:
$criteria = Criteria::create();
$criteria->where(Criteria::expr()->eq("versionFinale", true))
->andWhere(Criteria::expr()->eq("versionSoftDeleted", false))
->andWhere(Criteria::expr()->eq("versionStatus", "PUBLISHED"));
通常,我将使用以下代码来获得结果:
$repo->matching($criteria)
但是,由于我要使用KNP分页器,因此需要查询。
我可以使用:
$this->createQueryBuilder('a')
->addCriteria($criteria);
但是这将要求我在查询构建器中提供存储库,但它不是非常优雅和有效。
如何根据存储库和条件查询?
在创建某种PaginatorQueryService时有什么不好的地方?只需实现这样的事情(未经测试)
class PaginatorQueryService
{
private $em;
function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public function getPaginatorQuery($repository, $criteria)
{
return $this->em->createQueryBuilder()->select('entity')->from($repository, 'entity')->addCriteria($criteria)->getQuery();
}
}