Представлены фильмы и актеры в соотношении m: n. То, что я хочу сделать, это получить список актеров, упорядоченный по количеству фильмов, которую они играли вDataMapper: Сортировка результатов по количеству ассоциаций (количество связанных объектов)
class Movie
include DataMapper::Resource
property :id, Serial
property :title, String
has n, :actors, through: Resource
end
class Actor
include DataMapper::Resource
property :name, String, key: true
has n, :movies, through: Resource
end
В псевдо-DM, что я хочу это:.
Actor.all order: [ :movies.count ]
Я нашел другой вопрос о сортировке по одному атрибуту ассоциации, но этот подход работал только для реальных свойств. Любое полезное решение было бы полезно. Спасибо!
Если вы хотите вернуть хэш из этих данных так же просто, как: 'act = repository (: default) .adapter.select ( " SELECT players.name, count (actor_movies.actor_name) AS count "+ " ОТ актеров "+ "РЕГИСТРИРУЙТЕСЬ actor_movies ГДЕ actors.name = actor_movies.actor_name" + "GROUP BY actors.name" + " ORDER BY COUNT (actor_movies.actor_name) по убыванию" + "ПРЕДЕЛ 5;" ) .map {| структура | {: name => struct.name,: count => struct.count}} ' –