2012-06-11 68 views
1

行,所以基本上我創造了我的Kohana項目時收件箱Kohana的查詢顯示最新的記錄只有

到目前爲止,我已經能夠檢索消息沒有問題與此查詢

$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

我不是想限制結果排序。基本上我希望group by_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();