0
내가하고 싶은 것은 나에게있어서 꽤 근사하지만, 원시 SQL을 사용하지 않고도 DataMapper를 사용하여 수행 할 방법을 찾지 못했습니다. 위의 쿼리의 의도는 나에게 각 사용자가 얼마나 많은 게시물에 의해 정렬 된 모든 사용자를 보여주는 것입니다(원시 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
입니다. 다시 자원 객체를 제공하지 않습니다. 내가 무엇을 같은 하나의 쿼리를 생성하고 다시 표준 DM 개체를 얻을 수있는 방법입니다.
를 추가 여기에 체인을 체인 수있다; 하지만 뭔가를 놓치지 않는 한,이 방법은 아이 레코드 * 카운트 *를 정렬하는 법을 알려주지 않습니다. 그렇죠? 이것이 근본적으로 내 질문입니다. 예를 들어, 모든 사용자를 * 사용자별로 게시물 *별로 정렬하려면 어떻게해야합니까? (아마도'User.all (: order => {: posts => : count))'또는 이와 비슷한 것이지만, 분명히 작동하지는 않습니다.) –
사용자 객체에서 게시물 개수를 추적 할 때 작동합니다 그것은 상당히 사소한 일입니다. User.all (: order => {: post_count.desc}). 전체적으로 데이터베이스에서 더 쉬울 수도 있습니다. 게시물을 추가 할 때 증가시켜야합니다. – socialsiem
나는 그것이 사소하고 데이터베이스에서 더 쉬울 수도 있다는 것에 동의한다. 그러나, 나는 * 적절한 인덱싱으로 * 성능에 중요한 영향을 미치지 않을 것이라고 생각하지 않습니다. 더 중요한 것은 특정 ORM을 수용하기 위해 특정 데이터베이스 설계를 강요하지 않아야한다는 것입니다. 좀 거꾸로 보이지 않는가? –