簡體   English   中英

從數據庫中為列值選擇特定數量的結果

[英]select specific number of results for a column value from DB

我有一張“信息”表。 在此表中,我有以下幾列: messages(id, from, to, body, new, received_at)

我想獲取所有消息的集合,但每個“發件人”最多只能有2條新消息;

可以說,我總共有來自3個不同唯一用戶的50條消息。 但我想從每個用戶獲取最多2條消息。

我嘗試在獲取所有消息后過濾結果,但是我認為這是浪費資源。 如何通過單個查詢有效地做到這一點?

我認為單獨使用查詢來解決將太復雜。
嘗試首先獲取所有用戶,然后遍歷他們並從他們那里獲得2條最新消息。

更好的是,使用渴望的加載,因此效率更高。 例如:

$users = User::with(['messages' => function ($query) {
    $query->orderBy('created_at', 'desc')->limit(2);
}])->get();

$users->each(function ($user) {
    // $messages will consists of two most recent messages
    $messages = $user->getRelation('messages');
});

暫無
暫無

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

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