我可以使用DataMapper(不使用原始SQL)按子记录计数对记录进行排序吗?

时间:2012-10-23 16:37:08

标签: sql datamapper

我想要做的事情对我来说非常基本,但是我没有找到一种方法来使用DataMapper而不使用原始SQL。这看起来像是:

select u.id, u.name, count(p.id) as post_count
from posts p
inner join users u on p.user_id = u.id
group by p.user_id
order by post_count desc;

上述查询的目的是向我显示按每个用户拥有的帖子数量排序的所有用户。我使用DataMapper找到的最接近的是aggregate,它不会给我回资源对象。我喜欢的方法是生成一个查询并返回标准DM对象。

1 个答案:

答案 0 :(得分:-1)

假设你有关系

has_n, :posts

你应该可以做到

User.get(id).posts.count

User.first(:some_id => id).posts.count

u = User.get(1)
u.posts.count

你也可以连锁条件

User.get(1).posts.all(:date.gt => '2012-10-01')

查看范围并在此链接http://datamapper.org/docs/find.html

最后添加订购

User.get(1).posts.all(:order => [:date.desc])