2012-06-11 2 views
1

그래서 기본적으로 내 kohana 프로젝트의 오후의받은 편지함을 생성하고 OKkohana 쿼리 쇼 최신 기록 만

나는이 쿼리

$messages = DB::select('users.username', 'users.id', 'profiles.profile_picture', 'messages.thread', 'messages.subject', 'messages.content', array('messages.id', 'mid'))->from('messages')->join('users', 'LEFT')->on('users.id', '=', 'messages.from_id') 
       ->join('profiles', 'LEFT')->on('profiles.user_id', '=', 'messages.from_id')->where('messages.to_id', '=', $user)->and_where('messages.deleted', '=', '0')->execute(); 

에 문제없이 메시지를 검색 할 수 있었다 지금까지 내 질문은 동일한 사용자가 여러 명이있는 경우 마지막 메시지 만 표시하고 싶습니다. 결과를 렌더링 할 때 쿼리 또는 php로이를 수행해야합니까?

나는 이것을 사용할 수 있다고 생각하는 날짜 열을 가지고 있지만 최선의 방법은 확실치 않습니다.

감사

+1

당신은 날짜 DESC 및 LIMIT 1 –

+0

나는 결과를 제한하는 것을 시도하고 있지 않다으로 주문할 수 있습니다. 기본적으로 나는 from_id에 의해 그룹을 원하지만, 마지막 메시지를 반환하고 첫 번째 메시지는 반환하지 않고 추가하려고 할 때 -> group_by ('messages.from_id') – user1019144

+0

GROUP BY from_id DESC를 사용하여이를 수행하는 방법을 잘 모름 kohana, 그것이 당신에게 예상 결과를 가져다 준다면 손으로 시도하십시오. – Thorsten

답변

2
$messages = DB::select('users.username', 'users.id', 'profiles.profile_picture', 'messages.thread', 'messages.subject', 'messages.content', array('messages.id', 'mid')) 
    ->from('messages') 
    ->join('users', 'LEFT')->on('users.id', '=', 'messages.from_id') 
    ->join('profiles', 'LEFT')->on('profiles.user_id', '=', 'messages.from_id') 
    ->where('messages.to_id', '=', $user) 
    ->and_where('messages.deleted', '=', '0') 
    ->order_by('messages.id', 'desc') 
    ->offset(0) 
    ->limit(1) 
    ->execute(); 
관련 문제