You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Blade模板循环中无法访问对象属性值问题求助

问题原因
  • 你的循环嵌套多了一层,导致遍历出来的$event根本不是事件对象,而是对象属性的值
  • 具体来看你的数据结构:每个$user_id对应的$user_events_array本身就是直接存储事件对象的数组,比如示例中user_id=1对应的结构是[0 => 事件对象],你不需要再嵌套一层循环去遍历它的子元素
  • 当你执行@foreach($user_events_array as $events)时,$events已经是你要的事件对象了,再写一层@foreach($events as $event)时,PHP会默认遍历对象的所有公开属性,此时拿到的$event是id、status等属性的具体值(数字、字符串等标量类型),自然无法作为对象访问id属性
  • 直接输出{{ $event }}不会报错的原因是Laravel会自动把任意标量类型转为字符串输出,不会触发类型错误
修复方案

修改Blade中的循环逻辑,去掉多余的嵌套层即可:

@foreach($overview_pivot as $datetime => $users)
<tr>
  <td>{{ $datetime }}</td>
  @foreach($users as $user_id => $user_events_array)
  <td>
    <ul class="list-group list-group-flush" data-toggle="checklist">
      @foreach($user_events_array as $event)
         {{ $event->id }} 
      @endforeach
    </ul>
  </td>
  @endforeach
</tr>
@endforeach
  • 如果担心存在异常数据,可以使用Laravel提供的optional辅助函数避免报错:{{ optional($event)->id }}
  • 也可以在遍历前增加类型判断,确认$event是对象再访问属性:@if(is_object($event)) {{ $event->id }} @endif

内容的提问来源于stack exchange,提问作者Lukas Komar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:18:02