在symfony 2應用程序中,我有兩個實體通過oneToMany關係(用戶和集合點)映射。 我試圖搜索到我的用戶實體並加入了最後集合點找到的每個用戶。 的想法是這樣的事情:如何使用Doctrine(DQL)限制左連接的結果
$qb = $this->createQueryBuilder('p');
$qb->select('p.id, p.last_name, p.first_name')
->leftJoin('p.rendezvous', 'i')
->select('i.date')
->where('i.user = p.user')
->orderBy('i.date', 'DESC')
->setFirstResult(0)
->setMaxResults(1)
->where('p.user IN ('.$users.')')
->orderBy('p.last_name', 'ASC')
->addOrderBy('p.first_name', 'ASC');
我應該有類似的結果:
1,本,Tooch,2014年10月15日十八時45分00秒
7,約翰·斯諾2014 -10-16 17:15:00
...
我試着使用paginator函數但沒有任何成功。
非常感謝您的幫助。
嗨,這是行不通的:嵌入式SELECT將只檢索一次最大日期,並忽略所有不在此日期的其他rendez-vous,即使對於其餘行。換句話說,對於整個請求,嵌入式SELECT只執行一次 – Ninj 2016-05-24 22:21:05
是的,我們希望每行只有最後一個集合日期。問題在於使用 - > setFirstResult(0) - > setMaxResults(1),但由於在此情況下不支持LIMIT的原則錯誤,因此無法在左連接查詢中使用 – ArGh 2016-05-27 10:43:44