Репозиторий Symfony: получайте контролируемые элементы

У меня есть объект Item с атрибутом владельца, так что я могу отображать только элементы для вошедшего в систему пользователя. У объекта пользователя есть атрибут супервизора, которым является другой пользователь. В ветке я могу сравнить item.owner.supervisor.id с вошедшим в систему пользователем. Но теперь я хочу создать функцию репозитория, чтобы отображать все принадлежащие и контролируемые элементы.

$qb = $this->createQueryBuilder('i')
  ->select('i')
  ->where('i.owner = :user_id')      
  ->setParameter('user_id', $user->getId());
return $qb->getQuery()->getResult();

Это моя текущая функция, которая работает с собственными предметами. Если я использую

->where('i.owner.supervisor = :user_id')

Я получаю сообщение об ошибке, потому что супервизор не является свойством элемента. На самом деле я не вижу решения.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
0
26
1

Ответы 1

Я нашел решение. Я создал другой запрос, в котором я получаю всех пользователей, в которых я являюсь руководителем.

$owner = $this->createQueryBuilder('us')
  ->select('u.id')
  ->from('MyBundle:User', 'u')
  ->where('u.supervidor = :user_id')
  ->setParameter('user_id', $user->getId());
$ownerResult = $owner->getQuery()->getResult();

$qb = $this->createQueryBuilder('i')
  ->select('i')
  ->where('i.owner = :user_id')
  ->orWhere('i.owner IN (:subs)')
  ->setParameter('subs', $ownerResult)
  ->setParameter('user_id', $user->getId());
return $qb->getQuery()->getResult();

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