Heim >Datenbank >MySQL-Tutorial >Wie rufe ich mithilfe von ActiveRecord-Zuordnungen die fünf meistgehörten Songs ab?
Ordnen von ActiveRecord-Datensätzen nach Assoziationsanzahl
In Rails 3 können Sie mithilfe des ActiveRecord-Frameworks problemlos auf Daten aus verwandten Tabellen zugreifen und diese bearbeiten. Stellen Sie sich das Szenario vor, in dem Sie die fünf meistgehörten Songs von einem Modell namens „Song“ abrufen möchten. Sie haben ein separates Modell namens „Listen“, das eine Eins-zu-viele-Beziehung zwischen Liedern und Hörstücken herstellt.
Um das gewünschte Ergebnis zu erzielen, können Sie die Assoziationen „has_many“ und „gehört_to“ in Ihren Modellen verwenden. Ein benannter Bereich bietet eine bequeme Möglichkeit, komplexe Abfragen zu definieren und sie in Ihrer gesamten Anwendung wiederzuverwenden. So können Sie es implementieren:
class Song has_many :listens scope :top5, select("songs.id, OTHER_ATTRS_YOU_NEED, count(listens.id) AS listens_count"). joins(:listens). group("songs.id"). order("listens_count DESC"). limit(5) end
In diesem Code:
Jetzt können Sie verwenden Die Top5-Methode zum einfachen Abrufen der gewünschten Daten:
Song.top5 # top 5 most listened songs
Das obige ist der detaillierte Inhalt vonWie rufe ich mithilfe von ActiveRecord-Zuordnungen die fünf meistgehörten Songs ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!