首頁 >資料庫 >mysql教程 >如何使用 ActiveRecord 關聯檢索最常聽的 5 首歌曲?

如何使用 ActiveRecord 關聯檢索最常聽的 5 首歌曲?

DDD
DDD原創
2024-11-27 14:23:12566瀏覽

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

依關聯計數排序 ActiveRecord 記錄

在 Rails 3 中,您可以使用 ActiveRecord 框架輕鬆存取和操作相關表中的資料。考慮這樣的場景:您想要從名為 Song 的模型中檢索最常聽的 5 首歌曲。您有一個名為 Listen 的單獨模型,它在歌曲和聆聽之間建立了一對多關係。

要實現所需的結果,您可以在模型中利用 has_many 和 Belongs_to 關聯。命名範圍提供了一種定義複雜查詢並在整個應用程式中重複使用它們的便捷方法。以下是實作它的方法:

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

在此程式碼中:

  • select 指定要擷取的欄位並新增計算的listens_count 欄位。
  • joins建立歌曲和聆聽之間的關係。
  • group 依歌曲 ID 將結果分組,以統計收聽次數每首歌曲。
  • order 依 Listens_count 的降序排列結果。
  • limit 將選擇限制為最常聽的 5 首歌曲。

現在,您可以使用top5方法輕鬆擷取所需資料:

Song.top5 # top 5 most listened songs

以上是如何使用 ActiveRecord 關聯檢索最常聽的 5 首歌曲?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn