教义选择,总和

时间:2016-09-11 11:37:34

标签: doctrine symfony

我有一个MySQL查询,如果我在phpMyAdmin中运行它可以正常工作。现在我需要将它转换为Doctrine,这样就可以给我修理时间超过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

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

1 个答案:

答案 0 :(得分:4)

您是否为Job实体设置了repository

以下是未经测试的,但希望能让您入门。我使用QueryBuilder语法,但应该可以很容易地将其转换为普通的DQL。

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

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

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