【发布时间】:2021-12-16 16:51:13
【问题描述】:
我需要添加分页,但在我的情况下似乎很复杂,因为我使用分页从数据库中获取数据,但随后我修改了这些数据,当我在刀片上调用 links() 方法时,我得到以下异常方法 Illuminate\Support\Collection::links 不存在。
我在 Controller 方法中的代码:
$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);
$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'));
是的,分页将我的数据限制为 10 行,但由于我按天对数据进行分组,我的集合会自行修改,我无法使用 $transactionsByDays->links() 方法来显示分页。
如果看到 dd($transactionsByDays) ,它看起来像:
Illuminate\Support\Collection {#1381 ▼
#items: array:3 [▼
"01" => Illuminate\Support\Collection {#1019 ▼
#items: array:7 [▼
0 => array:16 [▶]
1 => array:16 [▶]
2 => array:16 [▶]
3 => array:16 [▶]
4 => array:16 [▶]
5 => array:16 [▶]
6 => array:16 [▶]
]
}
31 => Illuminate\Support\Collection {#1386 ▼
#items: array:2 [▼
0 => array:16 [▶]
1 => array:16 [▶]
]
}
30 => Illuminate\Support\Collection {#1384 ▼
#items: array:1 [▼
0 => array:16 [▶]
]
}
]
}
因此,我需要将“01”、31、30 内的所有数组分页...
我该怎么做?
也许以某种方式在控制器中重写上面的代码?
主要目的是我需要根据我的 json-resource 类将数据分组到每一天。
有什么想法吗?
【问题讨论】:
-
@ManojKiranAppathurai ,如果是真的,那就太容易了。其实我已经找到了解决办法。简而言之,我必须使用
paginate()方法传递一个变量,并将一个分组变量传递给我的视图。然后在第一个变量上使用links()方法,但在第二个变量(分组)上通过 foreach 迭代数据。我最初尝试在第二个(分组)变量上使用links(),但它不起作用,这就是问题所在。
标签: php laravel collections pagination