2016-02-09 188 views
0

我想拉一些統計數據,我需要構造一個DQL查詢,到目前爲止我所看到的是這樣的東西。現在DQL複雜的查詢,嵌套查詢

'SELECT COUNT(l) FROM AffiliateBundle:Lead l WHERE l.campaign = :campaign AND 
l.customer.subscription IS NOT NULL AND 
l.createdAt BETWEEN :date1 AND :date2' 

,問題是,我不能做到這一點:l.customer.subscription

我需要計算所有具有特定廣告活動相關聯的訂閱引線。

相關實體標記看起來是這樣的:

class Lead extends BaseEntity 
{ 
    /** 
    * @ORM\OneToOne(targetEntity="Customer", inversedBy="", cascade={"persist", "remove"}) 
    * @ORM\JoinColumn(name="customer_id", referencedColumnName="id", nullable=true, onDelete="CASCADE") 
    */ 
    private $customer; 
} 

class Customer extends BaseEntity 
{ 
    /** 
    * @ORM\OneToOne(targetEntity="Subscription", inversedBy="", cascade={"persist"}) 
    * @ORM\JoinColumn(name="subscription_id", referencedColumnName="id", nullable=true, onDelete="SET NULL") 
    */ 
    private $subscription; 
} 

認購是一個獨立的實體,但是這是不相關的。

回答

1

你應該用JOIN

'SELECT COUNT(l) FROM AffiliateBundle:Lead l 
JOIN AffiliateBundle:Customer c 
WHERE l.campaign = :campaign AND 
c.subscription IS NOT NULL AND 
l.createdAt BETWEEN :date1 AND :date2' 
+1

這樣做會有用剛剛加盟的其他實體那樣的問題。你應該像這樣加入這個關聯:'JOIN l.customer c' –