如何使用 ActiveRecord 关联检索最常听的 5 首歌曲?

DDD
发布: 2024-11-27 14:23:12
原创
546 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板