Метод getArrayResult
Метод getArrayResult класса Query выполняет
построенный запрос и возвращает результат в виде
обычного массива. В отличие от getResult метод
не возвращает объекты-сущности, а сразу отдаёт
массивы со значениями полей. Это удобно, когда нужны
только данные, а не управляемые сущности Doctrine.
Метод не принимает параметров.
Синтаксис
$res = $query->getArrayResult();
Пример
Давайте получим все записи в виде массива:
<?php
namespace AppController;
use AppEntityArticle;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(EntityManagerInterface $em): Response
{
$query = $em->createQuery('SELECT a FROM AppEntityArticle a');
$res = $query->getArrayResult();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[["id" => 1, "title" => "article 1"], ["id" => 2, "title" => "article 2"]]
Пример
Давайте выберем только поле title:
<?php
namespace AppController;
use AppEntityArticle;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(EntityManagerInterface $em): Response
{
$query = $em->createQuery('SELECT a.title FROM AppEntityArticle a');
$res = $query->getArrayResult();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[["title" => "article 1"], ["title" => "article 2"]]
Пример
Давайте передадим параметр в запрос и ограничим выборку:
<?php
namespace AppController;
use AppEntityArticle;
use DoctrineORMEntityManagerInterface;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(EntityManagerInterface $em): Response
{
$query = $em->createQuery('SELECT a FROM AppEntityArticle a WHERE a.title = :title');
$query->setParameter('title', 'abcde');
$res = $query->getArrayResult();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[["id" => 5, "title" => "abcde"]]
Смотрите также
-
класс
Query,
который представляет DQL-запрос -
метод
getResult,
который возвращает объекты-сущности -
метод
getScalarResult,
который возвращает скалярные значения -
метод
toIterable,
который возвращает итерируемый результат