繁体   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