You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel分页实现每页至多显示每个用户一条帖子的问题

Laravel分页查询:实现每页仅展示同一用户的一条帖子

模型与需求说明

我使用Laravel框架,Post模型结构如下:

class Post {
   id, 
   title,
   user_id
   // 其他字段
}

需求:按创建时间倒序分页获取帖子,但同一页中不能出现同一用户的多条帖子,期望通过以下代码调用实现:

Post::onePostPerUser()->orderByDesc('id')->simplePaginate(5)

示例数据如下:

iduser_id
1001
991
982
972
963
954
945
936

期望分页结果:

  • 第1页获取帖子ID:100、98、96、95、94
  • 第2页获取帖子ID:99、97……

当前实现的问题

我尝试用分区编写了查询作用域,但该实现仅对第1页有效,代码如下:

public function scopeOnePostPerUser($query)
{
    return $query->selectRaw('*')
        ->fromSub(function ($query) {
            $query->selectRaw('*, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY id DESC) AS rn')
                ->from('posts');
        }, 'posts')
        ->where('rn', '=', 1);
}

请问如何修改才能实现符合需求的分页逻辑?


内容的提问来源于stack exchange,提问作者Artur Kagaryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:08:26