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

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