间接修改App\\Models\\XXX 重载元素无效

关于 Indirect modification of overloaded element of App\Models\XXXXX has no effect

间接修改App\Models\XXX 的重载元素无效

出错代码如下:

foreach ($result as $key=>$val){
    $result[$key]['attrs'] = json_decode($val['result'],true)['value'];
    foreach ($result[$key]['attrs'] as $k=>$v){
        $result[$key]['attrs'][$k]['detail'] = explode(',',$v['sku']);
    }
}
发生这样的问题是因为传统PHP框架中Mysql查询的数据统一为数组,而新的框架将查询内容统一处理为对象。对象操作不能和数组一样随意追加元素,如果我们要追加新的元素,可以采用以下两种办法:

1、使用中间变量

foreach ($result as $key=>$val){
    $arr = [];
    $arr = json_decode($val['result'],true)['value'];
    foreach ($arr as $k=>$v){
        $arr[$k]['detail'] = explode(',',$v['sku']);
    }
    $result[$key]['attrs'] = $arr;
}

2、转换为数组操作
操作方法一致,将查询到的结果集result->toArray()然后进行数组操作即可。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5
sanders

没有出过这个问题,请问楼主的代码怎么写的,导致了这个问题?

9个月前 评论
YJ明 (楼主) 9个月前
sanders (作者) 9个月前

盲猜是修改了带有转换器的属性

9个月前 评论
YJ明 (楼主) 9个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!