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

Метод indexBy

Метод indexBy класса QueryBuilder задаёт поле, по значению которого будет проиндексирован результат выборки. Первым параметром передаётся строка с именем поля или выражение, возвращающее ключ массива. Если параметр не передан, индексация отключается.

Синтаксис

indexBy(string $indexBy)

Пример

Давайте проиндексируем результат выборки по полю id:

<?php namespace AppRepository; use AppEntityArticle; use DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository; use DoctrinePersistenceManagerRegistry; class ArticleRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Article::class); } public function findIndexed(): array { return $this->createQueryBuilder('a') ->select('a') ->indexBy('a', 'a.id') ->getQuery() ->getResult(); } } ?>

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

[1 => Article, 2 => Article, 3 => Article]

Пример

Давайте проиндексируем результат выборки по полю string:

<?php namespace AppRepository; use AppEntityArticle; use DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository; use DoctrinePersistenceManagerRegistry; class ArticleRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Article::class); } public function findByString(): array { return $this->createQueryBuilder('a') ->select('a') ->indexBy('a', 'a.string') ->getQuery() ->getResult(); } } ?>

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

['abcde' => Article, 'article' => Article, 'hello' => Article]

Пример

Давайте отключим индексацию, передав пустую строку:

<?php namespace AppRepository; use AppEntityArticle; use DoctrineBundleDoctrineBundleRepositoryServiceEntityRepository; use DoctrinePersistenceManagerRegistry; class ArticleRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Article::class); } public function findWithoutIndex(): array { return $this->createQueryBuilder('a') ->select('a') ->indexBy('a', '') ->getQuery() ->getResult(); } } ?>

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

[0 => Article, 1 => Article, 2 => Article]

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

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