0

私がやりたいことは私にとってかなり基本的なことですが、生のSQLに頼らずにDataMapperを使用してそれを行う方法を見つけていません。これは次のようになります。

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、です。これは、リソースオブジェクトを返しません。私が欲しいのは、 1つのクエリを生成し、標準のDMオブジェクトを取り戻す方法です。

4

1 に答える 1

-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])
于 2012-10-30T03:12:16.200 に答える