我有点坚持使用querybuilder来创建连接查询。 有一个名为" Person"还有一张名为" Vacancy"的表格。如果一个人与空缺相关联,则person.id和vacancy.id将保存在名为" Candidacy"的表格中。那么如何才能让所有能够获得空缺的人获得空缺.1?
那么我在哪里发起AppBundle:Candidacy实体?
$entity = $em
->getRepository('AppBundle:Person')
->createQueryBuilder('p')
->join('p.id', 'c')
->where('c.vacancyId= 1')
->getQuery()
->getResult();
提前谢谢。
答案 0 :(得分:1)
看起来你有很多对多的关系。 您应该将您的人员和职位空缺表通过候选人与人员联系起来,然后将空缺与候选人联系起来。
小例子:实体用户通过UserEngagement表附加到Engagement。
$qb = $this->_em->createQueryBuilder()
->select('u')
->from($this->_entityName, 'u')
->join('u.userEngagements', 'ue')
->join('ue.engagement', 'en')
...
答案 1 :(得分:1)
您的存储库中的示例:
public function getPersonVacancy($personId) {
$qb = $this->createQueryBuilder('p');
$qb->leftJoin('p.vacancy', 'v');
$qb->select('v.name', 'v.id');
$qb->where('p.id = :personId');
$qb->setParameter('personId', $personId);
return $qb ->getQuery()->getResult();
这是为了给你一个例子,它可能不适用于复制粘贴。 此外,所有连接方法都在学说文档中进行了解释,请随时阅读http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/query-builder.html