Doctrine 原则选择,有总和

Doctrine 原则选择,有总和,doctrine,symfony,Doctrine,Symfony,我有一个MySQL查询,如果我在phpMyAdmin中运行它,它可以正常工作。现在我需要把它转换成条令,这样它会给我修理时间超过300分钟的天数 SELECT date FROM `job` INNER JOIN `jobs_repairs` jr on job.id = jr.job_id INNER JOIN `repair` r on jr.repair_id = r.id GROUP BY date HAVING SUM(r.minutes) < 300 从“作业”中选择日期`

我有一个MySQL查询,如果我在phpMyAdmin中运行它,它可以正常工作。现在我需要把它转换成条令,这样它会给我修理时间超过300分钟的天数

SELECT date FROM `job`
INNER JOIN `jobs_repairs` jr on job.id = jr.job_id
INNER JOIN `repair` r on jr.repair_id = r.id
GROUP BY date
HAVING SUM(r.minutes) < 300
从“作业”中选择日期`
内部联接`jobs\u repairs`jr on job.id=jr.job\u id
jr上的内部联接'repair`r.repair\u id=r.id
按日期分组
总和(r.分钟)<300
我该怎么做?Doctrine通常只返回对象,但这不是一个对象,因为我正在查找作业对象的修复总时间超过300分钟的日期。

是否为作业实体设置了一个

以下内容未经测试,但有望让您开始学习。我正在使用语法,但应该能够很容易地将其转换为普通的DQL

$this->getQueryBuilder('j')
    ->innerJoin('j.repair', 'r')
    ->groupBy('j.date')
    ->having('SUM(r.minutes) < 300')
    ->getQuery()
    ->getResult();
$this->getQueryBuilder('j'))
->innerJoin('j.repair','r')
->groupBy('j.date')
->具有('总和(r.分钟)<300')
->getQuery()
->getResult();
这样做的目的是获取与查询匹配的作业对象。如果您的作业实体上有一个getDate()方法,您可以通过这种方式获得它,或者可以查看不同的方法。如果只需要一个数组,可以使用getArrayResult()而不是getResult()


更新。感谢Qoopmao发现我错过了总数

你为你的工作实体设置了一个吗

以下内容未经测试,但有望让您开始学习。我正在使用语法,但应该能够很容易地将其转换为普通的DQL

$this->getQueryBuilder('j')
    ->innerJoin('j.repair', 'r')
    ->groupBy('j.date')
    ->having('SUM(r.minutes) < 300')
    ->getQuery()
    ->getResult();
$this->getQueryBuilder('j'))
->innerJoin('j.repair','r')
->groupBy('j.date')
->具有('总和(r.分钟)<300')
->getQuery()
->getResult();
这样做的目的是获取与查询匹配的作业对象。如果您的作业实体上有一个getDate()方法,您可以通过这种方式获得它,或者可以查看不同的方法。如果只需要一个数组,可以使用getArrayResult()而不是getResult()



更新。感谢Qoopmao发现我错过了总数

你错过了
总数
。谢谢;似乎有用!最后,我使用了DQL:
从AppBundle中选择j.date:Job j internal JOIN j.repair GROUP BY j.date HAVING SUM(r.minutes)>:minutes'
您错过了
SUM
。谢谢;似乎有用!最后,我使用了DQL:
“从AppBundle中选择j.date:Job j internal JOIN j.repair GROUP BY j.date HAVING SUM(r.minutes)>:minutes”