学说querybuilder棘手的查询

时间:2019-10-24 14:25:15

标签: sql doctrine query-builder

我已经完成了使用教义querybuilder的查询,这使我所有在X天前更改为X阶段的学生。

代码如下:

$date = Carbon::today()->subDay($days);
$qb = $this->createQueryBuilder('s');
$qb->innerJoin('s.currentPDPStudentStageEntry','c', 'WITH', $qb->expr()->andX(
    $qb->expr()->eq('c.pdpStudentStage.stage', ':stage'),
    $qb->expr()->gt('c.createdAt', ':date1'),
    $qb->expr()->lte('c.createdAt', ':date2')
))->setParameters([
    'stage' => $stage, 
    'date1' => $date->format('Y-m-d H:i:s'), 
    'date2' => $date->addDay(1)->format('Y-m-d H:i:s')]);
return $qb->getQuery()->getResult();

现在,事情已经改变了业务逻辑。

我必须检查学生最近一次与系统的交互是否比阶段更改更近,在这种情况下,计数应该从那里开始。

举个例子:

$stage = 'enrolled'  
$days = 21;   

带上{$stage} {$days}天前进入舞台的所有学生。但是,如果学生与系统交互的日期晚于更改阶段日期的日期,则从该交互日期算起{$days}天。

注意:交互是一个由一个AboutsToMany关系关联的实体。
$this->interactions = new ArrayCollection()

首先,我想知道querybuilder是否可行,并了解代码的外观。如果没有,那么sql将如何,因为我也不知道如何使用sql。

非常感谢

0 个答案:

没有答案