Hey Leute, ich versuche, eine Abfrage zu entwickeln, die die Trendartikel aus der Datenbank zurückgibt.Ausarbeiten einer Trend-Abfrage - Laravel Eloquent
Die Trendartikel basieren auf den meisten Ansichten der letzten 24 Stunden. Hier ist der Code so weit:
$trending = Article::whereHas('view', function ($query) {
$query->where('created_at', '>=', Carbon::now()->subHours(24));
})
->with('view')
->orderBy('created_at', 'DESC')
->get();
return $trending;
}
Der Artikel Modell hat die folgende Beziehung:
public function view()
{
return $this->hasMany('ArticleView', 'article_id');
}
Die Abfrage funktioniert, aber ich brauche irgendwie auch die Artikel der Ansicht Zahl zu sortieren. Zum Beispiel werden die zur Zeit Trending Artikel angezeigt, aber die artticles mit der meisten Ansicht Zählung nicht von Anfang bis Ende bestellt (natürlich - sie werden von created_at bestellt werden)
Hilfe
geschätzt
Haben Sie irgendwelche Spalten, wo Sie die Anzahl der Ansichten für den Artikel speichern. Wenn Sie dann haben, können Sie es auch in die Abfrage aufnehmen, verwenden Sie wieder orderBy ('number_views', 'DESC') –
Es scheint, er hat eine Zeile für jede Sicht auf einen Artikel, angesichts der 'one-to-many' Beziehung. Im Idealfall sollte er auf die Ansichten in einer Abfrage zählen und innerlich mit der tatsächlichen Artikelabfrage verbinden. – Mysteryos
Ja, ich habe eine article_views-Tabelle, die die article_id, IP-Adresse und created_at speichert – Josh