У меня есть объект 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')
Я получаю сообщение об ошибке, потому что супервизор не является свойством элемента. На самом деле я не вижу решения.




Я нашел решение. Я создал другой запрос, в котором я получаю всех пользователей, в которых я являюсь руководителем.
$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();