0

私はドクトリンにまったく慣れていないので、特定のタスクを実行したいと考えています。

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関連する仕事がない場合でもすべてのカテゴリが返されます。

関連する仕事のあるカテゴリのみを返したいです。0以上のc.jobsカテゴリをカウントして選択するか何かを考えています。c.jobs教義でそれを行う方法は?

もっと良い方法があるとすれば、それは何ですか?

4

1 に答える 1

1

あなたが望むことをする唯一の正しい方法は、inner joinの代わりに使用することですleft join。コードは次のようになります。

    $qb = $this->createQueryBuilder('c')
                ->select('c, j')
                ->innerJoin('c.jobs', 'j');
于 2013-10-01T15:04:29.723 に答える