Метод getResult
Метод getResult принадлежит классу Query и выполняет
подготовленный DQL-запрос. Он возвращает массив результатов.
В отличие от метода getOneOrNullResult, который возвращает
только одну запись или null, данный метод отдаёт все
найденные строки. Если записей нет, возвращается пустой массив.
Метод не принимает параметров.
Синтаксис
public function getResult(): array
Пример
Давайте создадим Query и получим все записи из таблицы article:
<?php
namespace App\Controller;
use App\Entity\Article;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(EntityManagerInterface $em): Response
{
$dql = 'SELECT a FROM App\Entity\Article a';
$query = $em->createQuery($dql);
$res = $query->getResult();
return new Response(count($res));
}
}
?>
Результат выполнения кода при наличии трёх записей:
3
Пример
Давайте получим только определённые поля, используя скалярную выборку:
<?php
namespace App\Controller;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/names', name: 'article_names')]
public function names(EntityManagerInterface $em): Response
{
$dql = 'SELECT a.id, a.text FROM App\Entity\Article a';
$query = $em->createQuery($dql);
$res = $query->getResult();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[{"id": 1, "text": "article 1"}, {"id": 2, "text": "article 2"}]
Пример
Давайте проверим поведение метода, когда записей в базе нет:
<?php
namespace App\Controller;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/empty', name: 'article_empty')]
public function empty(EntityManagerInterface $em): Response
{
$dql = 'SELECT a FROM App\Entity\Article a WHERE a.id > 100';
$query = $em->createQuery($dql);
$res = $query->getResult();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[]
Смотрите также
-
класс
Query,
который представляет собой DQL-запрос -
метод
getOneOrNullResult,
который возвращает одну запись или null -
метод
getArrayResult,
который возвращает результат в виде массива -
метод
setMaxResults,
который ограничивает количество записей