我有2张桌子。
conversations
id | user_from | user_to | subject
messages
id | user_id | conversation_id | message
现在我想拉出特定User
的所有对话。但是,我无法知道如何做到这一点。我当前的解决方案为每次对话提供了最早的消息。
DB::table('conversations')
->where('user_from', '=', $this->id)
->orWhere('user_to', '=', $this->id)
->join('messages', 'conversations.id', '=', 'messages.conversation_id')
->groupBy('conversations.id')
->get();
如何在每次对话时收到最新消息?
答案 0 :(得分:0)
在普通的Mysql中你可以使用额外的自我加入消息,根据你的问题,我猜消息表中的id设置为auto_increment所以我使用MAX(id)
来获取每次会话的最近消息ID
SELECT
c.*
FROM
conversations c
JOIN messages m ON(m.conversation_id = c.id)
JOIN (SELECT conversation_id,MAX(id) ic FROM messages GROUP BY conversation_id) mm
ON(m.conversation_id = mm.conversation_id AND m.id = mm.id)