Laravel Eloquent复杂查询从一张表中获取最新数据

我正在用 laravel 创建实时聊天系统。我想从数据库获取最新消息。我想从雄辩中得到这样的查询。

$senderLastMessage = Message::where('sender_id',$user->id)->where('receiver_id',auth()->user()->id)->latest('created_at')->first();
$receiverLastMessage = Message::where('receiver_id',$user->id)->where('sender_id',auth()->user()->id)->latest('created_at')->first();

现在我想要最新的消息,在这种情况下,最新的消息将从 auth->user 或其他用户发送。我怎样才能得到这个?如果我单独得到这些。我将必须创建日期比较,例如检查 senderLastMessage->created_at 的日期是否更大或receiverLastMessage->created_at 是否更大,或者如果它们相等,则获取时间并检查谁的时间更大,然后显示该消息实例。

我怎样才能从雄辩中得到这个?


蝴蝶不菲
浏览 115回答 1
1回答

翻翻过去那场雪

只需在查询中使用 OR 条件和一些括号$lastMessage = Message::where( fuunction($query) use($user) {    $query->where('sender_id',$user->id)        ->orWhere('receiver_id', $user->id);})->where( function($query) {    $query->where('sender_id',auth()->id())        ->orWhere('receiver_id', auth()->id());})->latest('created_at')->first();
打开App,查看更多内容
随时随地看视频慕课网APP