最新关系模型Laravel的订单收集

时间:2019-04-30 16:58:14

标签: php laravel-5 eloquent

我有两个模型ChatChatMessage

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.

1 个答案:

答案 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",
}