DQL 复杂查询、嵌套查询

DQL Complicated query, nested query

我正在尝试提取一些统计数据,我需要构建一个 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;
}

订阅是一个单独的实体,但这不相关。

你应该使用 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'