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
相关产品推荐
相关产品推荐

