如何使用Doctrine2计算相关的表记录

时间:2013-10-01 14:27:02

标签: php mysql symfony join doctrine-orm

我对学说很新,我想完成一项任务。

我的jobs表格带有category_id列,显然是categories表。

在Symfony2中,我有这个存储库

<?php

namespace Ibw\JobeetBundle\Repository;

use Doctrine\ORM\EntityRepository;

class CategoryRepository extends EntityRepository
{
    public function getWithAllJobs()
    {
        $qb = $this->createQueryBuilder('c')
                    ->select('c, j')
                    ->leftJoin('c.jobs', 'j');
        return $qb->getQuery()->getResult();
    }

}

现在,当我得到getWithAllJobs函数的结果时,即使没有相关的工作,它也会返回所有类别。

我想只返回相关职位的类别。我正在考虑计算c.jobs并选择c.jobs大于0的类别。如何在学说中做到这一点?

如果有更好的方法,那是什么?

1 个答案:

答案 0 :(得分:1)

执行所需操作的唯一正确方法是使用inner join代替left join。您的代码应如下所示:

    $qb = $this->createQueryBuilder('c')
                ->select('c, j')
                ->innerJoin('c.jobs', 'j');