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