Doctrine orm 条令querybuilder从多对多关系中获取实体

Doctrine orm 条令querybuilder从多对多关系中获取实体,doctrine-orm,many-to-many,symfony,query-builder,Doctrine Orm,Many To Many,Symfony,Query Builder,我有一个项目实体。一个项目可以有多个用户实体。此外,一个用户实体可以有许多项目实体。因此,两者之间存在多对多关系 现在我想从单个项目中获取所有用户(参与者)。项目实体对用户实体的引用如下: /** * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Users\User", inversedBy="participating_projects") * @ORM\JoinTable(name="projects_users") */ privat

我有一个
项目
实体。一个项目可以有多个
用户
实体。此外,一个
用户
实体可以有许多
项目
实体。因此,两者之间存在多对多关系

现在我想从单个项目中获取所有用户(参与者)。
项目
实体对用户实体的引用如下:

/**
 * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Users\User", inversedBy="participating_projects")
 * @ORM\JoinTable(name="projects_users")
 */
private $project_participants;
用户实体对项目实体的引用如下所示:

/**
 * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Projects\Project", mappedBy="project_participants")
 */
private $participating_projects;
我正在尝试使用querybuilder执行以下操作:

$qb = $entity_manager->createQueryBuilder();
$query = $qb->select('p', 'pp')
    ->from('AppBundle:Projects\Project', 'p')
    ->leftJoin('p.project_participants', 'pp')
    ->where('p.id = :project')
    ->setParameter(':project', $project->getId())
    ->getQuery();

return $query->getResult();

这里的问题是,我还必须选择'p',但我只想要'pp'。有人有办法解决这个问题吗?

您可以从相关项目中选择用户:

$qb = $entity_manager->createQueryBuilder();
$query = $qb->select('u', 'pp')
    ->from(User::class, 'u')
    ->innerJoin('u.participating_projects', 'pp')
    ->where('pp.id = :project')
    ->setParameter(':project', $project->getId())
    ->getQuery();

return $query->getResult();