2016-09-11 43 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