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

Laravel 8中修改分页数据后如何在Blade中渲染分页链接

问题根源

你调用paginate()方法返回的是Illuminate\Pagination\LengthAwarePaginator实例,自带links()等分页相关方法;但你后续用collect()将其转换为了普通的Illuminate\Support\Collection实例,自然丢失了分页相关方法,所以触发了异常。

解决方案

你的需求不需要修改现有分页逻辑,分页元信息(总条数、当前页、每页条数)在调用paginate()时就已经生成,后续对当前页数据做分组、格式转换不会影响分页逻辑,只需要保留原始分页实例用于渲染分页链接即可。

修改后控制器代码

$transactionsByLastMonth = Transaction::where('created_at', '>=', Carbon::now()->subDays(30)->toDateTimeString())
    ->where('user_id', Auth::user()->id)
    ->with(['user', 'propertyFrom', 'propertyTo', 'paddockFrom', 'paddockTo', 'cattleTypeFrom', 'cattleTypeTo'])
    ->paginate(10);
        
// 仅对当前页的数据集做Resource转换、排序、分组处理,不修改原始分页实例
$transactionsByDays = collect(TransactionResource::collection($transactionsByLastMonth))
    ->sortByDesc('created_at')
    ->groupBy(function($date) {
        return Carbon::parse($date['created_at'])->format('d');
    });

// 同时将原始分页实例和处理后的分组数据传给视图
return view('user.reports.index', compact('transactionsByDays', 'transactionsByLastMonth'));

Blade视图调用代码

{{-- 遍历按天分组的交易数据渲染业务内容 --}}
@foreach($transactionsByDays as $day => $transactions)
    <h4>{{ $day }} 日交易记录</h4>
    @foreach($transactions as $transaction)
        {{-- 此处渲染单条交易的业务字段 --}}
    @endforeach
@endforeach

{{-- 直接用原始分页实例渲染分页链接 --}}
{{ $transactionsByLastMonth->links() }}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:15:08