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

如何在Laravel的Resource中输出关联Collection的分页链接

Laravel Resource 关联集合分页链接输出实现方案

问题原因

你给ItemCollection传入的是paginate()方法返回的LengthAwarePaginator分页实例,但是你重写了集合类的toArray方法,仅返回了自定义映射后的列表数据,分页实例自带的分页元数据(包含上下页链接、总页数、当前页码等)被直接丢弃,所以拿不到分页链接。

具体实现步骤

1. 修改ItemCollection类,补充分页元数据

你可以直接在toArray方法中同时返回自定义的列表数据和分页信息,修改后的代码如下:

public function toArray($request)
{
    return [
        // 你原来的自定义列表数据,放到data字段下
        'data' => $this->collection->map(function ($item) {
            return [
                "id"            =>  $item->id ,
                "name"          =>  $item->name ,
                "slug"          =>  $item->slug ,
                "image"         =>  imageGenerate("items" , $item->image) ,
                "code"          =>  $item->code ,
                "category"      =>  $item->category->name??""
            ];
        }),
        // 分页基础信息
        'current_page' => $this->currentPage(),
        'last_page' => $this->lastPage(),
        'per_page' => $this->perPage(),
        'total' => $this->total(),
        // 分页链接
        'links' => [
            'prev_page_url' => $this->previousPageUrl(),
            'next_page_url' => $this->nextPageUrl(),
            'first_page_url' => $this->url(1),
            'last_page_url' => $this->url($this->lastPage())
        ]
    ];
}

2. (可选)优化分页参数,避免冲突

如果你的主资源本身也做了分页,默认的page请求参数会同时作用于主资源和关联的items分页,导致页码异常。你可以给关联分页单独设置参数名,修改你的Resource类代码如下:

public function toArray($request)
{
    return [
        "name"              =>  $this->name ,
        "slug"              =>  $this->slug ,
        "bg_image"          =>  imageGenerate("sections" , $this->bg_image) ,
        "bg_color"          =>  $this->bg_color ,
        // 第三个参数指定关联分页的参数名为items_page,不会和主分页的page参数冲突
        "items"             =>  new ItemCollection($this->items()->paginate(20, ['*'], 'items_page')) ,
    ];
}

最终返回效果

修改后接口返回的items字段会包含data(列表内容)、links(分页链接)、分页参数三类信息,你需要的上下页链接就在items.links字段下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:06:05