Doctrine querybuilder 从多对多关系中获取实体
Doctrine querybuilder get entities from many-to-many relation
我有一个 Project
实体。一个项目可以有多个 User
个实体。此外,一个 User
实体可以有许多 Project
个实体。因此,两者之间存在多对多的关系。
现在我想从一个项目中获取所有用户(参与者)。 Project
实体对用户实体有这样的引用:
/**
* @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();
这里的问题是我还必须 select 'p',但我只想拥有 'pp'。有人有解决这个问题的想法吗?
您可以 select 来自相关项目的用户:
$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();
我有一个 Project
实体。一个项目可以有多个 User
个实体。此外,一个 User
实体可以有许多 Project
个实体。因此,两者之间存在多对多的关系。
现在我想从一个项目中获取所有用户(参与者)。 Project
实体对用户实体有这样的引用:
/**
* @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();
这里的问题是我还必须 select 'p',但我只想拥有 'pp'。有人有解决这个问题的想法吗?
您可以 select 来自相关项目的用户:
$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();