条令-带条件的双连接

u4vypkhs  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(360)

我有这样的结构:

Campaigns
id
visits <- OneToMany relation

Visits
id
actions <- OneToMany relation
orders <- OneToMany relation

Actions
id
visit_id
date

Orders
id
visit_id
date

我需要接受访问、行动和命令的活动,但只有fullfil条件(他们的date属性在最近7天的范围内)。
这是我的密码:

$qb = $this->createQueryBuilder('c');
$qb->join('c.visits', 'v');
$period = isset($params['period']) ? $params['period'] : 7;

$starting_date = new \DateTime("today -{$period} days");
$ending_date = new \DateTime('today 23:59:59');

$qb->innerJoin('v.actions', 'a', 'WITH', 'v.id = a.visit AND a.date >= :starting_date AND a.date <= :ending_date')
            ->setParameter('starting_date', $starting_date)
            ->setParameter('ending_date', $ending_date)
        ;

$qb->innerJoin('v.orders', 'o', 'WITH', 'v.id = o.visit AND o.date >= :starting_date AND o.date <= :ending_date')
            ->setParameter('starting_date', $starting_date)
            ->setParameter('ending_date', $ending_date)
        ;

return $qb->getQuery()->getResult();

我也用同样的方法尝试了leftjoin,但它返回所有操作和命令,而不仅仅是特定日期范围内的操作和命令。
我也尝试了无条件的连接,简单的左连接和另一个where,但效果不太好。
你们知道怎么解决这个问题吗?

ecfdbz9o

ecfdbz9o1#

问题解决了。在我的数据库中有日期从2018年开始而不是2019年的记录。这就是为什么这个查询不起作用的原因。

相关问题