我有两个模型Chat
和ChatMessage
。
Chat
有很多ChatMessage
,我想让Chat
ChatMessage
的所有created_at
排序
因此,如果created_at
中的ChatMessage
具有最接近今天的日期,则应首先订购该聊天。
这怎么办?
我只有这个
Chat::leftJoin('chat_messages', 'chats.id', '=', 'chat_messages.chat_id')
->orderBy('chat_messages.id', 'DESC');
but this does not work. i am not getting the newest row of chat_messages.
答案 0 :(得分:0)
您应该在created_at
列中对其进行排序:
$chats = Chat::select('chats.*')
->join('chat_messages', 'chats.id', '=', 'chat_messages.chat_id')
->orderBy('chat_messages.created_at', 'desc')
->get();
我已经用10个聊天记录和100条消息数据库进行了测试,其中最后一条消息是在其他消息之后创建的,最后一条消息是ID为#9的聊天室。
因此,当我执行上面的代码并检索第一个聊天室时,我得到以下信息:
App\Chat { #3401
id: 9,
created_at: "2019-04-30 17:12:34",
updated_at: "2019-04-30 17:12:34",
}