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

不通过控制器如何将路由中SQL查询获取的数据展示在Blade模板中

实现方案

你当前的实现思路本身是可行的,Laravel 支持在路由闭包中直接查询数据库并传递参数到视图,仅需要修正2处代码问题即可正常展示数据:

1. 路由代码调整

DB::select()执行原生SQL查询返回的是stdClass对象数组,你需要的count统计结果在数组第一个对象的统计字段中,不需要将整个数组传递到模板遍历,修改后的路由代码如下:

Route::get('/dashboard', function () {
    // 给count统计结果起别名方便后续取值
    $sql = "select count(id) as total from vehicle";
    $queryVeh = DB::select($sql);
    // 取出统计的数值直接传给模板
    $vehicleCount = $queryVeh[0]->total;
    return view('dashboard')->with('vehicleCount', $vehicleCount);
});

2. Blade模板代码调整

现在传递到模板的是单个统计数值,不需要再用循环遍历,直接输出即可:

<div class="w3-row-padding w3-margin-bottom">
    <div class="w3-quarter">
        <div class="w3-container w3-red w3-padding-16">
            <div class="w3-left">
                <i class="fa fa-comment w3-xxxlarge"></i>
            </div>
            <div class="w3-right">
                <h3>{{ $vehicleCount }}</h3>
            </div>
            <div class="w3-clear"></div>
            <h4>Total Vehicles</h4>
        </div>
    </div>
</div>

可选优化方案(推荐)

你可以直接用Laravel查询构造器获取统计值,不需要编写原生SQL,代码更简洁不易出错:

Route::get('/dashboard', function () {
    $vehicleCount = \DB::table('vehicle')->count('id');
    return view('dashboard')->with('vehicleCount', $vehicleCount);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:48:00