РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
65 of 258 menu

Метод getScalarResult

Метод getScalarResult класса Query выполняет DQL-запрос и возвращает результат в виде плоского массива скалярных значений. Каждая строка результата представляет собой ассоциативный массив, где ключами являются имена выбранных полей, а значениями - сами скалярные значения. Метод не принимает параметров и возвращает массив.

Этот метод удобен, когда нужно получить только отдельные поля сущности, а не целые объекты. Он работает быстрее, чем getResult, поскольку не выполняет гидр��цию в объекты.

Синтаксис

public function getScalarResult(): array

Пример

Давайте получим список статей с их заголовками:

<?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('/articles', name: 'article_list')] public function list(EntityManagerInterface $em): Response { $query = $em->createQuery( 'SELECT a.title, a.text FROM App\Entity\Article a' ); $res = $query->getScalarResult(); return new Response(json_encode($res)); } } ?>

Результат выполнения кода:

[ {"title": "article 1", "text": "text 1"}, {"title": "article 2", "text": "text 2"}, {"title": "article 3", "text": "text 3"} ]

Пример

Давайте получим только идентификаторы и заголовки статей:

<?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('/articles/ids', name: 'article_ids')] public function ids(EntityManagerInterface $em): Response { $query = $em->createQuery( 'SELECT a.id, a.title FROM App\Entity\Article a' ); $res = $query->getScalarResult(); return new Response(json_encode($res)); } } ?>

Результат выполнения кода:

[ {"id": 1, "title": "article 1"}, {"id": 2, "title": "article 2"}, {"id": 3, "title": "article 3"} ]

Пример

Давайте получим агрегированные данные с помощью COUNT:

<?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('/articles/count', name: 'article_count')] public function count(EntityManagerInterface $em): Response { $query = $em->createQuery( 'SELECT COUNT(a.id) AS total FROM App\Entity\Article a' ); $res = $query->getScalarResult(); return new Response(json_encode($res)); } } ?>

Результат выполнения кода:

[{"total": 5}]

Смотрите также

  • класс Query,
    который представляет DQL-запрос
  • метод getResult,
    который возвращает результат в виде объектов
  • метод getArrayResult,
    который возвращает результат в виде массива
  • метод getSingleScalarResult,
    который возвращает одно скалярное значение
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить