如何根据 Doctrine 中的 Repository / Criteria 进行查询?
How to get query based on Repository / Criteria in Doctrine?
我如何在 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,这不是很优雅和高效。
我如何获得基于存储库和条件的查询?
创建某种 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();
}
}
我如何在 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,这不是很优雅和高效。
我如何获得基于存储库和条件的查询?
创建某种 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();
}
}