最近在用 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
Stevenv 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 既然你用了框架,是不是应该尽量使用框架的东西,否则合并用框架,框架的目的就是规范写法,利用后期维护的
|