背景:
我在进行查询并循环时候报错如下:
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:
解决办法
知道原因解决起来就简单多了,无非是把对象转成数组就可以了。具体解决方法如下:
我们可以再加一句下面这样的代码,在进行循环处理:
$data_list = $data_list->all();
或者
直接在 连接查询后边 追加 一下 :
select()->all();



