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

Laravel中DB::Select返回数据无法在Blade模板循环显示求助

问题解决:Laravel DB::Select查询结果在Blade中循环显示错误

你的代码存在三个核心问题,逐一修正即可解决:

错误点说明

  • 循环变量引用错误:@foreach里定义的单个对象变量是$metric_datas,但你取值时误用了数组变量$metric_data,导致试图从数组访问对象属性的错误。
  • 特殊字段名访问方式错误:查询结果里的count(*)是特殊命名字段,直接用->count(*)会触发PHP语法错误,必须用花括号包裹字段名来访问。
  • HTML结构不合法:<tr>、<td>是表格专用标签,必须放在<table>标签内部,直接放在<div>里会导致渲染异常。

修正后的Blade代码

<div class="mt-5 text-center">
    @if ($metric_data)
        <table>
            @foreach ($metric_data as $item)
                <tr>
                    <td>{{ $item->company_name }}</td>
                    <td>{{ $item->{'count(*)'}</td>
                </tr>
            @endforeach
        </table>
    @else
        <p>No items found.</p>
    @endif
</div>

优化建议

为了避免特殊字段名的访问麻烦,建议在SQL查询时给count(*)起别名,比如:

$metric_data = DB::select('SELECT company_name, count(*) as total FROM your_table GROUP BY company_name');

这样Blade里可以直接用更简洁的方式访问:

<td>{{ $item->total }}</td>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:45:35