Метод getQuery
Метод getQuery класса QueryBuilder создаёт и возвращает объект Query на основе собранного DQL-запроса. Он не принимает параметров и вызывается в конце цепочки построения запроса. Полученный объект Query можно выполнить методами getResult, getOneOrNullResult, getSingleScalarResult и другими.
Синтаксис
$query = $qb->getQuery();
Пример
Давайте создадим QueryBuilder, выберем все записи и получим объект Query:
<?php
namespace AppController;
use AppEntityArticle;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(EntityManagerInterface $em): Response
{
$qb = $em->createQueryBuilder();
$qb->select('a')
->from(Article::class, 'a');
$query = $qb->getQuery();
$res = $query->getResult();
return new Response(count($res));
}
}
?>
Результат выполнения кода:
"5"
Пример
Давайте получим одну запись по идентификатору:
<?php
namespace AppController;
use AppEntityArticle;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function show(EntityManagerInterface $em, int $id): Response
{
$qb = $em->createQueryBuilder();
$qb->select('a')
->from(Article::class, 'a')
->where('a.id = :id')
->setParameter('id', $id);
$query = $qb->getQuery();
$article = $query->getOneOrNullResult();
return new Response($article->getTitle());
}
}
?>
Результат выполнения кода для статьи с заголовком 'article':
"article"
Пример
Давайте получим скалярное значение - количество записей:
<?php
namespace AppController;
use AppEntityArticle;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function count(EntityManagerInterface $em): Response
{
$qb = $em->createQueryBuilder();
$qb->select('COUNT(a.id)')
->from(Article::class, 'a');
$query = $qb->getQuery();
$res = $query->getSingleScalarResult();
return new Response($res);
}
}
?>
Результат выполнения кода:
"5"
Смотрите также
-
класс
QueryBuilder,
который строит DQL-запросы -
метод
where,
который задаёт условие выборки -
метод
setParameter,
который привязывает значение к параметру -
метод
getDQL,
который возвращает строку DQL-запроса