依關聯計數排序 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
在此程式碼中:
現在,您可以使用top5方法輕鬆擷取所需資料:
Song.top5 # top 5 most listened songs
以上是如何使用 ActiveRecord 關聯檢索最常聽的 5 首歌曲?的詳細內容。更多資訊請關注PHP中文網其他相關文章!