Indirect modification of overloaded element of think\Collection has no effect 解决方法

背景:

我在进行查询并循环时候报错如下:

Indirect modification of overloaded element of think\Collection has no effect

中文翻译

间接修改 think\Collection 的重载元素无效

 

出错的文件代码如下:

 $data_list = Db::name("activity")
            ->where('id',1)
            ->select();
        if(!empty($data_list)){
            foreach ($data_list as $key => $value) {
                $company_mes = $CompanyModel->get_company_mes($value['company_id']);
                $data_list[$key]['company_name'] = $company_mes['company_name'];
                $data_list[$key]['company_logo'] = $company_mes['company_logo'];

            }
        }

 

原因:

此时用select() 方法 得出的结果是 对象。 打印一下 data_list:Indirect modification of overloaded element of think\Collection has no effect

 

解决办法

知道原因解决起来就简单多了,无非是把对象转成数组就可以了。具体解决方法如下:

 

我们可以再加一句下面这样的代码,在进行循环处理:

$data_list = $data_list->all();

 

或者

 

直接在 连接查询后边 追加 一下 :

 select()->all();
头像

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: