【发布时间】:2020-07-31 10:50:12
【问题描述】:
我有一个使用 Laravel 构建的聊天应用程序。 聊天模型有很多消息。 我想使用每个聊天中最新消息中的数据加入相关聊天。 到目前为止,这就是它的设置方式
chats()->join('messages', function ($join) {
$join->on('messages.chat_id', '=', 'chats.id')
->on('messages.id', '=', DB::raw("(SELECT max(id) from messages WHERE messages.chat_id = chats.id)"));
})
这很好用,但我希望能够通过 max created_at 或 max modified_at 进行选择。
如果我将 id 切换为 created_at ('messages.created_at', '=', DB::raw("(SELECT max(id) from messages WHERE messages.chat_id = chats.id)")) 这可能会起作用,但如果两条记录具有相同的时间戳,则可能会导致不需要的行为。选择 max 时是否有某种方法可以检索整行以便我可以选择 id?
【问题讨论】:
-
我现在正在开发一个聊天系统,我使用“最新”解决了它...messages->latest()->paginate(20) 然后我颠倒顺序让它们显示在页面上的显示方式与聊天的显示方式相同(最旧的在顶部,最新的在底部)。