Как использовать выражение в select count (...)? (Доктрина)

У меня есть сущности User и UserGroup. У каждого пользователя есть группа (UserGroup), и у каждого пользователя есть начальник (User).

Я хотел бы получить список групп и решить, является ли текущий пользователь начальником кого-либо в группе. Я уже реализовал это в SQL, а теперь попытался решить с помощью Doctrine. Вот что я пробовал:

$qb = em()->createQueryBuilder()
    ->select(array('gr.id AS group_id', 'gr.name AS group_name', 'COUNT(us.boss = :current_user_id)>0 AS is_boss'))
    ->from('\App\Entity\UserGroup', 'ug')
    ->leftJoin('\App\Entity\User', 'us', 'WITH', 'us.group = ug.id')

    ->setParameter('current_user_id', $_SESSION['uid'])

    ->groupby('gr.id')
;

$groups = $qb->getQuery()->getScalarResult();

К сожалению, у меня есть неперехваченный QueryException, и я не знаю, как это исправить. Как можно поместить выражение внутри функции COUNT(...)?

Что за сообщение об ошибке? И вам следует groupBy со всеми столбцами, а не только с id.

Felippe Duarte 26.11.2018 20:37

Он работает без части COUNT(...). Сообщение об ошибке просто содержит запрос DQL: SELECT gr.id AS group_id, gr.name AS group_name, COUNT(us.boss = :current_user_id)>0 AS is_boss FROM \App\Entity\UserGroup ug LEFT JOIN \App\Entity\User us WITH us.group = ug.id GROUP BY gr.id

Iter Ator 26.11.2018 20:45
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
93
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать Функция mysql case для этого:

$queryBuilder->addSelect('case when COUNT(case when us.boss = :current_user_id then 1 else 0 end)>0 then 1 else 0 end AS is_boss');

Ссылка

Другие вопросы по теме