Метод addSelect
Метод addSelect класса QueryBuilder добавляет указанные поля в секцию SELECT DQL-запроса. В отличие от метода select, который полностью заменяет список выбираемых полей, addSelect добавляет новые поля к уже существующим. Первым параметром передаётся строка с полями или массив строк. Если поле уже присутствует в выборке, повторно оно добавлено не будет.
Синтаксис
addSelect(string|array $select): self
Пример
Давайте создадим запрос, который изначально выбирает поле id, а затем добавим к нему поля title и text:
<?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 findArticleFields(): array
{
$qb = $this->createQueryBuilder('a');
$qb->select('a.id')
->addSelect('a.title')
->addSelect('a.text');
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода:
[['id' => 1, 'title' => 'article 1', 'text' => 'abcde'], ['id' => 2, 'title' => 'article 2', 'text' => 'abcde']]
Пример
Давайте передадим массив полей в метод addSelect для добавления сразу нескольких полей:
<?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 findArticleFields(): array
{
$qb = $this->createQueryBuilder('a');
$qb->select('a.id')
->addSelect(['a.title', 'a.text', 'a.datetime']);
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода:
[['id' => 1, 'title' => 'article 1', 'text' => 'abcde', 'datetime' => '2024-01-01 12:00:00'], ['id' => 2, 'title' => 'article 2', 'text' => 'abcde', 'datetime' => '2024-01-02 12:00:00']]
Смотрите также
-
метод
select,
который заменяет список выбираемых полей -
метод
from,
который задаёт сущность для выборки -
метод
getQuery,
который создаёт объект Query из QueryBuilder -
класс
QueryBuilder,
который строит DQL-запросы