2012-06-11 4 views
1

OK поэтому в основном я создаю вечера Входящие в моем Кохана проектеКохана шоу запроса последняя запись только

До сих пор я был в состоянии получить сообщения без проблем с этим запросом

$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(); 
Смежные вопросы