後,我想訂先前的主查詢的唯一結果。Symfony的學說 - 排序依據查詢
我想那麼10個最看的文章由「addedAt日期」 DESC下令。
我所知道的功能,例如排序依據甚至addOrderBy,但它不是我所需要的這裏還是我沒有正確地實現它。
實例讓高層2月5篇:
- 名稱:一個|| views: || addedAt:/04/2017年
- 名稱:B ||意見:10 || addedAt:17/04/2017
- 名稱:C || views:50 || addedAt:15/04/2017
- 名:d ||觀點:25 || addedAt:2017年12月4日
- 姓名:E || views: || addedAt:/04/2017年
我第一次提取最觀點:
- E條
- 第一個
然後通過addedAt日期DESC orderedIt(最最近):
- Articl EA
- E條
我的查詢:
public function findMostViewed($limit=10, $asArray=false)
{
$qb = $this->createQueryBuilder('n')
->orderBy('n.nbViews', 'DESC')
//->addOrderBy('n.addedAt', 'DESC')
->getQuery()
->setMaxResults($limit);
return ($asArray) ? $qb->getResult(Query::HYDRATE_ARRAY) : $qb->getResult();
}
如果我知道如何做一個preSelectQuery它將有可能解決這個問題...
我認爲一個SQL查詢:
SELECT ...
FROM ...
WHERE id IN(SELECT id FROM News ORDER BY nbViews DESC LIMIT 10)
ORDER BY addedAt DESC
不,這不是我想要的。有了這個,我會得到最新的記錄,如果沒有記錄的「addedAt」類似,那麼第二個orderBy將不起作用。 – Doshibu