2016-09-11 42 views
0

我有一个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 

我怎么做到这一点的日子吗?学说通常只是返回对象,但这不是一个对象,因为我正在寻找工作对象的修复时间总共超过300分钟的日期。

回答

3

您是否为Job实体安装了repository

以下是未经测试,但应该有希望让你开始。我使用的是QueryBuilder语法,但应该可以很容易地将它转换为纯DQL。

$this->getQueryBuilder('j') 
    ->innerJoin('j.repair', 'r') 
    ->groupBy('j.date') 
    ->having('SUM(r.minutes) < 300') 
    ->getQuery() 
    ->getResult(); 

这是做什么是获取匹配您的查询的作业对象。如果您的Job实体上有getDate()方法,则可以这样做,或者可以看看不同的​​3210。如果你只是想要一个数组,你可以使用getArrayResult()而不是getResult()。


已更新。谢谢qooplmao发现我错过了SUM

+1

你错过了'SUM'。 – qooplmao

+1

谢谢;似乎工作! 最后,我用DQL虽然: \t \t \t \t''SELECT j.date FROM的appbundle:工作j \t \t \t \t INNER JOIN j.repair [R \t \t \t \t GROUP BY j.date \t \t \t \t HAVING SUM(r.minutes)>:minutes'' – bluppfisk