Ich möchte nur das Ergebnis der vorherigen Hauptabfrage bestellen.Symfony Doctrine - OrderBy nach Abfrage
Ich möchte die Top 10 der am meisten angesehenen Artikel dann bestellt von "addedAt Datum" DESC.
Ich bin mir dessen bewusst Funktionen wie orderBy oder sogar addOrderBy aber es ist nicht das, was ich brauche hier oder ich die Umsetzung nicht richtig.
Beispiel die Besten 2 auf 5 Artikel zu erhalten:
- Name: a || Ansichten: || addedAt: /04/2017
- name: b || Aufrufe: 10 || hinzugefügt am: 17/04/2017
- name: c || Aufrufe: 50 || hinzugefügt am: 15/04/2017
- name: d || Aufrufe: 25 || hinzugefügt am: 12/04/2017
- name: e || Ansichten: || addedAt: /04/2017
ich zuerst die meisten Ansichten extrahieren:
- Artikel e
- Artikel ein
Und dann orderedIt von addedAt Datum DESC (die meisten kürzlich):
- Articl ea
- Artikel e
Meine Frage:
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();
}
Wenn ich weiß, wie man ein preSelectQuery zu tun wäre es wahrscheinlich das Problem lösen hat ...
Ich dachte an eine SQL-Abfrage :
SELECT ...
FROM ...
WHERE id IN(SELECT id FROM News ORDER BY nbViews DESC LIMIT 10)
ORDER BY addedAt DESC
Nein, es ist nicht das, was ich will.Damit würde ich die aktuellsten Datensätze und die zweite Reihenfolge bekommen. Es würde nicht einmal funktionieren, wenn es keinen Datensatz mit einem "addedAt" -Ähnlichen gibt. – Doshibu