Laravel 使用 paginate 分页后 怎么修改其中的数据?

2020-02-15 06:17:41 +08:00
 JasonTsang

最近在用 LARAVEL 时 不知怎么修改 paginate 分页后返回的数据。

7119 次点击
所在节点    PHP
26 条回复
sun522198558
2020-02-15 08:21:43 +08:00
view 层判断
zachlhb
2020-02-15 08:23:39 +08:00
model 层访问器
triptipstop
2020-02-15 08:29:54 +08:00
page 对象可以拆开了再组回去
dump 出来看看 就清楚了
DavidNineRoc
2020-02-15 09:13:22 +08:00
直接看分类类的源码就能知道了。
这个对象直接遍历是遍历他的数据而不是他的属性。
所以只要你 foreach 它,然后修改遍历的属性就可以修改了。
Stevenv
2020-02-15 09:17:50 +08:00
返回的是个对象,你可以直接遍历处理数据。。
linxl
2020-02-15 09:26:45 +08:00
https://learnku.com/docs/laravel/5.5/eloquent-mutators/1335
用这个, 新增一个方法例如 getStatusNameAttribute
JasonTsang
2020-02-15 13:44:33 +08:00
@Stevenv 事实上却不行,说数据受保护。
JasonTsang
2020-02-15 13:45:18 +08:00
@zachlhb 不懂,我是新手,能直接点告诉我么??
JasonTsang
2020-02-15 13:45:50 +08:00
@linxl 这么隆重么???我只想改一下结果
JasonTsang
2020-02-15 13:57:35 +08:00
@triptipstop 访问都访问不了 如何拆 如何组? Cannot access protected property Illuminate\\Pagination\\LengthAwarePaginator::$items
linxl
2020-02-15 14:07:39 +08:00
@JasonTsang 这个挺简单的, 也不会影响原有 status 字段, 更合理
JasonTsang
2020-02-15 14:13:57 +08:00
@linxl 这不合理啊 每修改一个属性都要写一个方法,这太麻烦了吧
kiddyu
2020-02-15 14:52:29 +08:00
要遍历的不应该是 $list 么,为啥要遍历 $list->items->items
JasonTsang
2020-02-15 15:04:22 +08:00
@kiddyu 哈哈哈 大哥 你没用 laravel 吧,paginate 分页返回的是一个对象,对象下一个属性保存数据。哪个结构怪复杂的。
kiddyu
2020-02-15 15:19:45 +08:00
@JasonTsang #14 你试试就知道了
4ark
2020-02-15 15:41:56 +08:00
这种需求最标准的解决方案是用 #6 的方法,至于你觉得修改一个属性都要写一个方法是麻烦的话,我敢肯定你的代码到时候一定不好维护
FragmentLs
2020-02-15 16:02:37 +08:00
就如 @kiddyu 说的,LZ 你遍历错了...paginate 返回的是 collection.
stevenhawking
2020-02-15 16:53:31 +08:00
$paginate->getCollection()->transform(function($item) {
$item->id ++;
return $item;
});
zachlhb
2020-02-16 08:25:12 +08:00
@JasonTsang 方法 6 楼有人说了,这个方法最简单,而且易于扩展,如果你在这处逻辑更改了字段,其他地方也要用呢?再写一次?使用 laravel 就要了解他的分层,每一层各司其职,实现低耦合高内聚
JasonTsang
2020-02-17 05:09:52 +08:00
@zachlhb 你们都错了 ,这个可以直接遍历项,
foreach($list->items() as $v){
$v->status = $v->status == 1?"正常":"禁用";
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/644692

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX