symfony存储库:获取监督项目

时间:2018-03-14 10:32:19

标签: symfony doctrine

我有一个具有所有者属性的项目实体,因此我只能向登录用户显示项目。用户实体具有管理员属性,其他用户。在twig中,我可以将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')

我收到错误,因为主管不是商品的属性。我实际上没有看到解决方案。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我创建了另一个查询,我得到所有用户,我是一名主管。

$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();