Как получить запрос на основе репозитория / критериев в Doctrine? - PullRequest
0 голосов
/ 08 января 2020

Как в Doctrine можно получить запрос на основе Criteria?

У меня есть следующий Doctrine Набор критериев:

$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);

Однако это потребовало бы от меня предоставления репо в построителе запросов, что было бы не очень элегантно и эффективно.

Как я могу получить запрос на основе хранилища и критериев?

1 Ответ

0 голосов
/ 14 января 2020

Что не элегантно в создании какого-либо 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...