Doctrin的查询生成器。用where子句查询AND

时间:2017-07-18 08:03:55

标签: doctrine query-builder

我在Doctrine中的查询生成器中有一个查询。我的疑问是:

$result = $this->entityManager->createQueryBuilder()
                    ->select('cc', 'cct', 'cces')->from('App\Http\Entities\Cic\CaseCategory', 'cc')
                    ->innerJoin('cc.type', 'cct')
                    ->leftJoin('cc.eventSubject', 'cces')
                    ->orderBy('cc.title')
                    ->where('cc.active = 1')
                    ->getQuery();

如何使用AND子句进行查询?我的意思是在where子句中替换cc.active = 1 AND system_category=1'而不是cc.active = 1。 我正试着这样做:

$result = $this->entityManager->createQueryBuilder()
                    ->select('cc', 'cct', 'cces')->from('App\Http\Entities\Cic\CaseCategory', 'cc')
                    ->innerJoin('cc.type', 'cct')
                    ->leftJoin('cc.eventSubject', 'cces')
                    ->orderBy('cc.title')
                    ->where('cc.active = 1 AND system_category=1')
                    ->getQuery();

但是这样它不会起作用。我怎么能正确地做到这一点? 我很乐意帮忙。 最好的问候

1 个答案:

答案 0 :(得分:1)

试试这个:

$result = $this->entityManager->createQueryBuilder()
   ->select('cc', 'cct', 'cces')->from('App\Http\Entities\Cic\CaseCategory', 'cc')
   ->innerJoin('cc.type', 'cct')
   ->leftJoin('cc.eventSubject', 'cces')
   ->orderBy('cc.title')
   ->where('cc.active = 1')
   ->andWhere('system_category=1')
   ->getQuery();

我建议你使用这样的参数:

$result = $this->entityManager->createQueryBuilder()
       ->select('cc', 'cct', 'cces')->from('App\Http\Entities\Cic\CaseCategory', 'cc')
       ->innerJoin('cc.type', 'cct')
       ->leftJoin('cc.eventSubject', 'cces')
       ->orderBy('cc.title')
       ->where('cc.active = :active')
       ->andWhere('system_category=:system_category')
       ->setParameters(
          [
              'active' => 1,
              'system_category' => 1
          ]
       )
       ->getQuery();