【问题标题】:How to make a join query on Symfony with Doctrine?如何使用 Doctrine 对 Symfony 进行连接查询?
【发布时间】:2016-11-10 08:18:56
【问题描述】:

我有点坚持使用查询构建器来创建连接查询。 有一个名为“Person”的表和一个名为“Vacancy”的表。如果某人与空缺职位相关联,则 person.id 和 vacancy.id 将保存在名为“候选资格”的表中。那么如何获取所有链接到 vacancy.id 1 的人呢?

那么我必须在哪里启动 AppBundle:Candidacy 实体?

$entity = $em
    ->getRepository('AppBundle:Person')
    ->createQueryBuilder('p')
    ->join('p.id', 'c')
    ->where('c.vacancyId= 1')
    ->getQuery()
    ->getResult();

提前谢谢你。

【问题讨论】:

标签: php sql symfony join doctrine


【解决方案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

【讨论】:

    【解决方案2】:

    看起来你有多对多的关系。 您应该通过 Candidacy 到 Person,然后将 Vacancy 到 Candidacy 链接您的 Person 和 Vacancy 表。

    小例子:实体用户通过 UserEngagement 表附加到 Engagement。

            $qb = $this->_em->createQueryBuilder()
            ->select('u')
            ->from($this->_entityName, 'u')
            ->join('u.userEngagements', 'ue')
            ->join('ue.engagement', 'en')
            ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-23
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多