Метод resetDQLPart
Метод resetDQLPart принадлежит классу QueryBuilder и удаляет ранее добавленную часть DQL-запроса. Первым параметром передаётся имя части запроса: 'select', 'from', 'where', 'join', 'orderBy', 'groupBy', 'having', 'set' и другие. Если параметр не указан, метод сбрасывает все части запроса сразу.
Синтаксис
$qb->resetDQLPart($part);
Пример
Давайте создадим запрос с условием, а затем сбросим часть 'where' и построим его заново:
<?php
namespace AppRepository;
use DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository;
use DoctrineORMEntityManagerInterface;
use DoctrineORMPersistenceManagerRegistry;
class ArticleRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Article::class);
}
public function findFiltered(): array
{
$qb = $this->createQueryBuilder('a');
$qb->where('a.integer > 1');
$qb->resetDQLPart('where');
$qb->where('a.integer > 3');
return $qb->getQuery()->getResult();
}
}
?>
В результате условие 'a.integer > 1' будет удалено, а запрос выполнится с условием 'a.integer > 3'.
Пример
Давайте сбросим сразу все части запроса, не передавая параметр:
<?php
namespace AppRepository;
use DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository;
use DoctrinePersistenceManagerRegistry;
class ArticleRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Article::class);
}
public function findClean(): array
{
$qb = $this->createQueryBuilder('a');
$qb->select('a.string')
->where('a.boolean = true')
->orderBy('a.datetime', 'DESC');
$qb->resetDQLPart(null);
$qb->select('a')
->from(Article::class, 'a');
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода:
["article 1", "article 2", "article 3"]
Смотрите также
-
класс
QueryBuilder,
который строит DQL-запросы -
метод
where,
который добавляет условие в запрос -
метод
getDQL,
который возвращает итоговую строку DQL -
метод
getQuery,
который возвращает объект Query для выполнения