Laravel视图foreach循环报错:Attempt to read property "data_audit" on array
问题原因及修复方案
错误原因
后端生成的$data是嵌套数组结构:每个区域键对应一个数组集合,集合内的每个元素是包含data_audit的关联数组。而前端Blade代码直接对这个数组集合使用对象属性访问符->,且未遍历集合内的单个审计记录,导致报错“Attempt to read property "data_audit" on array”。
修复方案
方案一:调整前端Blade代码(推荐)
修正循环逻辑,先遍历区域分组,再遍历每组下的审计记录,同时用数组索引访问属性:
<div class="audit-daily-intestazione"> @if (!empty($data)) @foreach ($data as $areaKey => $auditRecords) <!-- 可选:展示区域信息,拆分分隔符 --> <div> <span class="audit-daily-text39"> <strong style="font-size: 13px;">{{ str_replace('|', ' / ', $areaKey) }}</strong> </span> </div> <!-- 遍历该区域下的所有审计记录 --> @foreach ($auditRecords as $audit) <div> <span class="audit-daily-text39"> <strong style="font-size: 13px;">{{ \Carbon\Carbon::parse($audit['data_audit'])->format('d/m') }}</strong> </span> </div> @endforeach @endforeach @endif </div>
方案二:后端将数组转为对象(可选)
如果偏好使用对象属性访问,可以在后端将每个审计条目转为对象:
foreach ($audits as $audit) { $areaKey = "{$audit->master_zone}|{$audit->subarea}|{$audit->microarea}"; // 将数组转为对象 $data[$areaKey][] = (object)[ 'esito' => $audit->esito, 'data_audit' => $audit->data_audit ]; };
此时前端内层循环可改用$audit->data_audit访问属性,但仍需保持嵌套循环结构。
内容的提问来源于stack exchange,提问作者Morex
相关产品推荐
相关产品推荐

