簡體   English   中英

Laravel Eloquent 復雜查詢獲取一張表的最新數據

[英]Laravel Eloquent Complex Query get lastest data from one table

我正在用 laravel 創建實時聊天系統。 我想從數據庫中獲取最新消息。 我想從 eloquent 進行這樣的查詢。

$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 更大,或者如果它們相等則到達那里的時間並檢查誰的時間更大,然后顯示該消息實例。

我怎樣才能從 eloquent 得到這個?

只需在查詢中使用帶括號的 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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM