Heim >Datenbank >MySQL-Tutorial >Wie rufe ich mithilfe von ActiveRecord-Zuordnungen die fünf meistgehörten Songs ab?

Wie rufe ich mithilfe von ActiveRecord-Zuordnungen die fünf meistgehörten Songs ab?

DDD
DDDOriginal
2024-11-27 14:23:12566Durchsuche

How to Retrieve the Top 5 Most Listened-to Songs Using ActiveRecord Associations?

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:

  • select gibt die abzurufenden Spalten an und fügt eine berechnete Listens_Count-Spalte hinzu.
  • Joins stellt die Beziehung zwischen Lied und Hören her.
  • Gruppe gruppiert die Ergebnisse nach Lied-ID, um die Anzahl der Hörvorgänge für jedes Lied zu zählen Lied.
  • order ordnet die Ergebnisse in absteigender Reihenfolge der Listen_Count an.
  • Limit beschränkt die Auswahl auf die 5 meistgehörten Lieder.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn