【问题标题】:How to get query based on Repository / Criteria in Doctrine?如何根据 Doctrine 中的 Repository / Criteria 获取查询?
【发布时间】:2020-04-26 09:21:48
【问题描述】:

在 Doctrine 中我如何获得基于 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 Paginator,我需要一个查询。

我可以使用:

$this->createQueryBuilder('a')
     ->addCriteria($criteria);

但是,这需要我在查询构建器中提供 repo,这不会非常优雅和高效。

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

【问题讨论】:

    标签: doctrine-orm doctrine knppaginator


    【解决方案1】:

    创建某种 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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 2011-03-24
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多