如何根据教义中的存储库/条件查询?

问题描述 投票:0回答:1

如何在学说中基于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);

但是这将要求我在查询构建器中提供存储库,但它不是非常优雅和有效。

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

doctrine-orm doctrine knppaginator
1个回答
0
投票

在创建某种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();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.