2016-04-01 11 views
2

私のSymfonyプロジェクトでは、少なくとも1つのアクティブな注文を持つすべての顧客を検索したいと思っています。ここに私のクエリは、私の受注リポジトリに来る:Doctrine 2:特定の属性を持つ少なくとも1つのレコードに基づいてレコードを取得していますか?

$query = $this->createQueryBuilder('o') 
      ->select([ 
       'c.firstname', 
       'c.lastname' 
       ]) 
      ->join('\MyBundle\Entity\Contacts', 
        'c', 
        'WITH', 
        'c.crmid = o.idCustomer'); 

私は私だけで持っているそれらの顧客を得ることを実現するにはどうすればよい値0または1を持つことができる「のisActive」と呼ばれる私のOrdersテーブルのフィールドがありますisActive = 1を含む少なくとも1つの注文は、もはやアクティブではない注文も考慮していますか?

答えて

0

あなたはこのように、サブクエリを行う必要があります。

$query = $this->createQueryBuilder('o') 
     ->select(
     'c.firstname', 
     'c.lastname' 
     ) 
     ->addSelect('(
      SELECT COUNT(or.id) 
      FROM MyBundle\Entity\Orders AS or 
      WHERE or.contact = c.id 
      AND or.isActive = 1 
     ) as orders_num 
     ') 
     ->join('\MyBundle\Entity\Contacts', 
      'c', 
      'WITH', 
      'c.crmid = o.idCustomer') 
     ->having('orderes_num > 0') 
関連する問題