Метод getDQL
Метод getDQL возвращает итоговую строку
DQL-запроса, которую построил объект
QueryBuilder. Он не выполняет запрос,
а только собирает все части (SELECT, FROM, WHERE
и так далее) в одну строку. Это удобно для
отладки, логирования или передачи запроса
в другие сервисы.
Синтаксис
public function getDQL(): string
Пример
Давайте создадим простой построитель
и посмотрим, какую строку вернёт метод
getDQL:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use DoctrineORMEntityManagerInterface;
class ArticleController extends AbstractController
{
public function index(EntityManagerInterface $em): Response
{
$qb = $em->createQueryBuilder();
$qb->select('a')
->from('AppEntityArticle', 'a')
->where('a.id = :id')
->setParameter('id', 1);
$dql = $qb->getDQL();
return new Response($dql);
}
}
?>
Результат выполнения кода:
"SELECT a FROM AppEntityArticle a WHERE a.id = :id"
Пример
Метод getDQL также можно использовать
для отладки сложных запросов с несколькими
условиями и сортировкой:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use DoctrineORMEntityManagerInterface;
class ArticleController extends AbstractController
{
public function index(EntityManagerInterface $em): Response
{
$qb = $em->createQueryBuilder();
$qb->select('a.title', 'a.text')
->from('AppEntityArticle', 'a')
->where('a.id > :minId')
->andWhere('a.active = :active')
->setParameter('minId', 10)
->setParameter('active', true)
->orderBy('a.title', 'ASC')
->setMaxResults(5);
$dql = $qb->getDQL();
return new Response($dql);
}
}
?>
Результат выполнения кода:
"SELECT a.title, a.text FROM AppEntityArticle a WHERE a.id > :minId AND a.active = :active ORDER BY a.title ASC"
Смотрите также
-
класс
QueryBuilder,
который создаёт построитель запросов -
метод
getQuery,
который создаёт объект Query для выполнения -
метод
select,
который задаёт выбираемые поля -
метод
where,
который задаёт условие запроса