@postgresdev

Правильно ли указывать foreach в репозитории в Symfony?

Нужно сделать выборку одной колонки в виде массива. Как правильней: foreach в сервисе или репозитории?
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
@Flying
Вам стоит взглянуть на различные режимы гидраторов в Doctrine. В частности в вашем случае вы, скорее всего захотите использовать scalar hydration по результатам выборки одного столбца. Вместе с этим режимом очень хорошо работает array_column(), так что ваш метод мог бы выглядеть примерно вот так (в примере идёт выборка столбца email из entity User):
public function getEmails()
{
    return array_column($this->getEntityManager()
        ->createQuery('select u.email from User u')
        ->getResult(\Doctrine\ORM\Query::HYDRATE_SCALAR), 'u_email');
}

или, если вам, к примеру, необходима связь между id и email:
public function getEmails()
{
    return array_column($this->getEntityManager()
        ->createQuery('select u.id, u.email from User u')
        ->getResult(\Doctrine\ORM\Query::HYDRATE_SCALAR), 'u_email', 'u_id');
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы