Doctrine orm 如何根据条令中的存储库/条件获取查询?

Doctrine orm 如何根据条令中的存储库/条件获取查询?,doctrine-orm,doctrine,knppaginator,Doctrine Orm,Doctrine,Knppaginator,我怎样才能根据标准获得查询 我制定了以下原则标准: $criteria = Criteria::create(); $criteria->where(Criteria::expr()->eq("versionFinale", true)) ->andWhere(Criteria::expr()->eq("versionSoftDeleted", false)) ->andWhere(Criteria::expr()->eq("versionSt

我怎样才能根据
标准获得查询

我制定了以下原则标准:

$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 Paginator,我需要一个查询

我可以使用:

$this->createQueryBuilder('a')
     ->addCriteria($criteria);
然而,这将需要我在查询生成器中提供repo,这将不是非常优雅和高效


如何根据存储库和条件获取查询?

在创建某种PaginaTorRyService时,有什么不优雅的地方?只需实现类似的功能(未经测试)

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();
    }
}