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

PHP Blade模板嵌套遍历二级对象数组渲染HTML表格方法

Blade嵌套循环实现赛果记录逐行渲染方案

核心实现逻辑

Blade模板的循环指令支持多层嵌套,内层循环可以直接访问外层循环的变量,你只需要把<tr>行标签放到内层遍历rachasres数组的循环内部,就能实现每条streak记录单独占一行的效果,球员的固定属性(昵称、姓名等)直接在外层$jugador变量上读取即可。

可直接复用的代码示例

<tbody>
  @foreach ($jugadores as $jugador)
    {{-- 遍历当前球员下的所有赛果streak记录 --}}
    @forelse ($jugador->rachasres as $streak)
      <tr>
        <td class="text-center">{{ $jugador->apodo }}</td>
        <td class="text-center">{{ $jugador->nombre }}</td>
        <td class="text-center">{{ $streak->racha }}</td>
        <td class="text-center">{{ $streak->conteo }}</td>
        <td class="text-center">{{ $streak->inicio }}</td>
        <td class="text-center">{{ $streak->fin }}</td>
        {{-- 其他需要展示的列按需补充即可 --}}
      </tr>
    @empty
      {{-- 兼容球员无streak记录的场景,避免球员在列表中缺失 --}}
      <tr>
        <td class="text-center">{{ $jugador->apodo }}</td>
        <td class="text-center">{{ $jugador->nombre }}</td>
        <td class="text-center" colspan="4">暂无赛果连胜/连败记录</td>
      </tr>
    @endforelse
  @endforeach
</tbody>

可选优化:实现同球员列跨行合并

如果你不想让同一个球员的昵称重复显示,可以用rowspan属性做单元格合并,只需要在内层循环第一次迭代时输出带合并属性的昵称列,后续迭代跳过该列即可:

<tbody>
  @foreach ($jugadores as $jugador)
    @php $streakCount = count($jugador->rachasres); @endphp
    @forelse ($jugador->rachasres as $index => $streak)
      <tr>
        @if ($index === 0)
          <td class="text-center" rowspan="{{ $streakCount }}">{{ $jugador->apodo }}</td>
          <td class="text-center" rowspan="{{ $streakCount }}">{{ $jugador->nombre }}</td>
        @endif
        <td class="text-center">{{ $streak->racha }}</td>
        <td class="text-center">{{ $streak->conteo }}</td>
        <td class="text-center">{{ $streak->inicio }}</td>
        <td class="text-center">{{ $streak->fin }}</td>
      </tr>
    @empty
      <tr>
        <td class="text-center">{{ $jugador->apodo }}</td>
        <td class="text-center">{{ $jugador->nombre }}</td>
        <td class="text-center" colspan="4">暂无赛果连胜/连败记录</td>
      </tr>
    @endforelse
  @endforeach
</tbody>

数据结构优化建议

  • 建议在球员模型中为rachasres字段配置数组/集合类型转换,保证模板读取时该字段永远是可遍历的结构,避免出现null值导致循环报错。
  • 所有计算类字段(比如你之前用到的场均进球golAvg、总记录数等)尽量在控制器/模型层完成计算,不要在模板中写业务计算逻辑,保持模板只负责渲染的单一职责。
  • 如果后续需要对streak记录做筛选、排序、分页或者单独统计,建议将rachasres抽离为独立的数据表,和球员模型建立一对多关联;如果只是小体量固定统计展示,直接用JSON字段存储该数组完全够用,不需要额外拆表。

内容的提问来源于stack exchange,提问作者Matias Diez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:48:22