我从数据库中获取一些数据,并通过以下调用进行分页:
$itemsList = DB::Table('items')->paginate(10);
数据中的每个项目都有一个与之相关的失效日期,根据该失效日期我可以计算剩余的天数,并使用我编写的函数作为数组返回。我需要以某种方式将此数组集成到分页调用中,以便每个页面显示正确的剩余天数。目前,我的刀片文件中包含以下内容:
<?php
$i = 0;
?>
@foreach ($itemsList as $item)
<tr>
<td>{{ $item->item_name }}</td>
<td>{{ $item->item_user }}</td>
<td>{{$left_days[$i++]}}</td>
使用此方法,分页的第一页工作正常,left_days数组引用列表中的正确项目。但是,在其他页面上,left_days值引用第一页的项,因为每次运行时i值都从0开始。
我认为我需要在分页调用之前将left_days数组添加到集合中,但是我还无法弄清楚该怎么做。
更具体地说,以下是$ itemList上dd的结果:
LengthAwarePaginator {#292 ▼
#total: 94
#lastPage: 10
#items: Collection {#277 ▼
#items: array:10 [▼
0 => {#276 ▼
+"id": 1
+"item_name": "sadasd"
+"item_user": "sadas"
+"expiry_date": "2019-06-26"
+"last_modified_by": "someone"
+"created_at": "2019-06-18 15:19:33"
+"updated_at": "2019-06-18 15:19:33"
}
1 => {#270 ▶}
2 => {#279 ▶}
3 => {#280 ▶}
4 => {#281 ▶}
5 => {#282 ▶}
6 => {#283 ▶}
7 => {#284 ▶}
8 => {#285 ▶}
9 => {#286 ▶}
]
}
#perPage: 10
#currentPage: 1
#path: "http://localhost:8000/licenses"
#query: []
#fragment: null
#pageName: "page"
+onEachSide: 3
#options: array:2 [▶]
}
我想我需要有一种方法可以在正确的位置插入数组,以使集合中的每个项目都具有在分页之前计算的left_days归档时间。
答案 0 :(得分:0)
罗兰·斯塔克(Roland Starke)和蒂姆·刘易斯(Tim Lewis)给出的答案:
使用:
Item::paginate(10);
代替:
DB::Table('items')->paginate(10);'
并在模型内部编写一个get函数,如下所示:
public function getLeftDaysAttribute(){
calculations...
return value;
}
之后,我可以简单地在刀片文件中调用left_days的值:
$item->left_days