2016-04-01 10 views
2

Symfony projemde bir SQL sorgusunda tüm müşterileri en az bir aktif sipariş almak istiyorum. Ben sadece var bu müşteri elde Bunu başarmak nasıl değerini 0 veya 1. olabilir "isActive" adını verdiğim Siparişler tablosunda bir alan vardırDoktrin 2: Belirli bir öznitelikle en az bir kayda dayanarak kayıt alma?

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

: İşte benim Siparişleri depodaki benim sorgu geliyor isActive = 1 ile en az bir sipariş, artık aktif olmayan siparişler de dikkate alınarak mı?

cevap

0

Böyle bir alt sorgu yapmalısınız:

$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') 
İlgili konular